
Laboratorio di exploit Drupalgeddon3 RCE con ambiente vulnerabile basato su Docker e integrazione Metasploit per formazione pratica sullo sfruttamento di CVE-2018-7602.
Una vulnerabilità di esecuzione remota di codice esiste all'interno di molti sottosistemi di Drupal 7.x e 8.x. Ciò consente potenzialmente agli attaccanti di sfruttare molteplici vettori d'attacco su un sito Drupal, il che può comportare il compromettersi del sito. Questa vulnerabilità è correlata al Drupal core - Altamente critico - Esecuzione remota di codice - SA-CORE-2018-002. Sia SA-CORE-2018-002 che questa vulnerabilità sono stati sfruttati in natura. --- MITRE
A causa di alcune limitazioni di rete in Docker per Mac (https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) e Windows, il codice qui sotto dovrebbe essere eseguito su una macchina LINUX con docker e docker-compose installati.
Qui abbiamo una procedura in due fasi: prima la macchina Drupal con una versione vulnerabile 7.57 e poi la macchina attaccante con un exploit modificato che ci permette di mostrare il potenziale pericolo della vulnerabilità.
# Supponendo che tu sia posizionato all'interno della directory CVE-2018-7602
cd vulnerable_machine
docker-compose up -d
cd ..
Avvertenza Assicurati che la porta 80 non sia utilizzata da nessun altro software prima di eseguire il comando.
Macchina attaccante: Qui istanzieremo un'immagine docker di Metasploit che contiene un exploit personalizzato (drupal_drupalgeddon3_commander) che verrà utilizzato in seguito. Per fare ciò eseguiamo:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
Se hai qualche problema nell'eseguire i comandi qui sotto, invia un'email a [email protected] allegando il log di esecuzione e lui sarà felice di aiutarti a risolvere il problema.
Ora che abbiamo Drupal in esecuzione, dobbiamo configurare e creare alcuni contenuti usando Drupal. Per fare ciò segui i seguenti passi:


# Panoramica
Proveremo a usare la vulnerabilità per eseguire comandi come ls o whoami
per mostrare che è possibile eseguire comandi da remoto.
Ora che abbiamo l'istanza vulnerabile di Drupal in esecuzione su localhost. Il passo successivo è iniziare a usare l'istanza di metasploit creata nella fase di configurazione dell'ambiente.
Su metasploit, dobbiamo ricaricare il database degli exploit usando il comando:
reload_all
Con ciò abbiamo accesso all'exploit di cui abbiamo bisogno. Quindi, per preparare le informazioni necessarie all'exploit, avremo bisogno dei cookie di sessione di qualche utente autenticato sul sito.
Per ottenerli in modo semplice. Supponendo che tu sia ancora autenticato. Vai agli strumenti per sviluppatori, guarda l'archivio dei cookie e salvalo per dopo. Dovresti ottenere alla fine qualcosa come
#<nome_sessione>=<token_sessione>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
Un esempio che utilizza google chrome per ottenere il cookie

Ora iniziamo a caricare l'exploit con metasploit. Per fare ciò esegui i seguenti comandi:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
Come puoi vedere abbiamo bisogno di alcuni parametri. Impostiamo i parametri in questo modo
set RHOSTS localhost
set DRUPAL_SESSION <nome_sessione>=<token_sessione>
Dopo aver fatto ciò possiamo eseguire
exploit
Otterremo l'utente che sta attualmente eseguendo il server web. In questo caso www-data. Poiché il comando predefinito impostato è whoami. Vedrai anche alcune informazioni extra in formato JSON che non sono rilevanti per noi.
Risultato finale dell'exploit:

Fine della sperimentazione: Se sei riuscito a eseguire tutta la sperimentazione con successo, allora è la fine Congratulazioni.
Se vuoi continuare a sperimentare puoi cambiare il valore del comando usando l'istruzione set. Oppure modificare lo script ruby usato da metasploit.