
Lehrreiches FastAPI-Lab für lokale Sicherheitsschulungen, das CVE-2021-41773 Verzeichnis-Traversal und lokale Dateieinbindung demonstriert und einen verwundbaren Server, gepatchten Code sowie Beispiele für codierte Payloads enthält.
Ein kleines, in sich geschlossenes FastAPI-Labor, das zeigt, wie das Dekodieren von Benutzereingaben vor der Validierung von Dateisystemgrenzen zu Directory Traversal und Local File Inclusion (LFI) führen kann – angelehnt an die Apache-HTTP-Server-Probleme CVE-2021-41773.
%2e) und doppelt codierte (%252e) UmgehungencurluvicornLaufzeitabhängigkeiten installieren:
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
Öffnen Sie http://127.0.0.1:8011/ in Ihrem Browser – der Root-Endpoint zeigt gängige Payloads und Hinweise.
Um den Fix zu beobachten, stoppen Sie den verwundbaren Server und führen Sie den gepatchten Server aus:
uvicorn patched_app:app --port 8011
curl --path-as-is http://localhost:8011/icons/test.txt
curl --path-as-is "http://localhost:8011/icons/.%2e/secret.txt"
curl --path-as-is "http://localhost:8011/icons/.%252e/secret.txt"
Beim verwundbaren Server können diese Payloads secret.txt zurückgeben. Beim gepatchten Server sollten sie abgelehnt werden (HTTP 403).
os.path.realpath() auflösen.webroot-Verzeichnisses liegt – andernfalls verweigern.Dies erzwingt die korrekte Reihenfolge: Dekodieren → Kanonisieren → Autorisieren.
Dieses Repository dient ausschließlich der lokalen, lehrreichen Nutzung. Setzen Sie den verwundbaren Server keinen öffentlichen Netzwerken aus.
MIT-Lizenz
Kunal Khandelwal – Security Researcher, Application Security