
Proof-of-Concept für die LFI/Path-Traversal-Sicherheitslücke in Aiohttp =< 3.9.1
Proof-of-Concept für LFI/Pfad-Traversal-Schwachstelle in Aiohttp =< 3.9.1
[!IMPORTANT] Dieses Skript dient ausschließlich Bildungszwecken.
Jegliche illegale Nutzung ist strengstens untersagt.
$ git clone https://github.com/wizarddos/CVE-2024-23334
$ cd CVE-2024-23334
$ python3 exploit.py -u [url] -f [datei] -d [static-verzeichnis]
[!Note] Achte darauf, die Schrägstriche in der URL und im static-Verzeichnis abzugleichen – wenn du
http://127.0.0.1/eingibst, gib das Verzeichnis ohne Schrägstrich an (z. B.static) und umgekehrt (URL ohne Schrägstrich, Verzeichnis mit Schrägstrich).
Die Schwachstelle liegt in der Art und Weise, wie aiohttp Anfragen für statische Ressourcen verarbeitet.
Wenn wir Code wie diesen schreiben:
app.router.add_routes([
web.static("/static", "static/", follow_symlinks=True)
])
macht follow_symlinks=True es anfällig für LFI.
Um statische Ressourcen zu nutzen, musst du das Stammverzeichnis angeben.
Die Option follow_symlinks teilt aiohttp mit, symbolischen Links außerhalb des Stammverzeichnisses zu folgen, prüft jedoch nicht, ob der Link selbst im Stammverzeichnis liegt.
Selbst wenn dieser besagte „Symlink“ gar kein Link ist, führt aiohttp das Dateilesen durch und gibt seinen Wert zurück.
Quelle https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f