
Exploit Python per CVE-2019-6340 mirato all'API RESTful di Drupal 8 per eseguire codice in remoto tramite richieste HTTP appositamente create. Include setup Docker e payload di command injection.
CVE 2019-6340
Il sito con il modulo RESTful API Services del core di Drupal 8 abilitato consente all'utente di inviare richieste GET, PATCH o POST al server.
(Una richiesta GET è sufficiente per innescare la vulnerabilità di esecuzione di codice anche se il metodo PATCH è disabilitato)
Il sito ha qualsiasi altro modulo di servizi web abilitato, come JSON-API in Drupal 8 o REST services in Drupal 7.
REQUISITI PER IL POC
DOCKER.IO
DRUPAL 8.6.9
SQL 5.7
docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=password mysql:5.7
docker run -d --name drupal --link mysqldb -p 8090:80 -e MY_SQL_USER:root -e MY_SQL_PASSWORD:password drupal:8.6.9
comando di esecuzione di exp
python3 exp.py http://Ip_of_drupal_container:port_assigned(if)// "command_to_execuite"
esempio:- python3 exp.py http://127.0.0.1:8090/ "hostname -I"
ANALISI DELL'EXP
Guzzle è un client HTTP PHP che semplifica l'invio di richieste HTTP e l'integrazione con i servizi web ed è utilizzato come exploit per inviare richieste dannose a siti web basati su Drupal. Se analizziamo lo script Guzzle all'interno del codice exploit (exp.py), possiamo scoprire che una stringa "command" viene sostituita con il comando che passiamo in fase di esecuzione (ad esempio hostname -I)

Quando eseguiamo il comando exp, prima cercherà un nodo esistente, quindi dobbiamo creare alcuni nodi sul nostro sito web, in pratica dobbiamo aggiungere del contenuto al sito web

Non accederà mai allo stesso nodo due volte; supponi di aver aggiunto 5 nodi, quindi dopo aver eseguito l'exploit 5 volte dovrai aggiornare i tuoi nodi. Vai semplicemente a Contenuto e applica qualsiasi azione sui nodi
RICHIESTA E RISPOSTA

