
Containerisiertes dreistufiges Lab, das CVE-2023-43804 urllib3-Cookie-Leak über Cross-Origin-Redirects reproduziert, mit Exploit-Skript und Patch-Verifikation.
Das Repository enthält eine vollständig containerisierte, dreistufige Laborumgebung, die dazu dient, CVE-2023-43804 (den urllib3 Cookie-Leak bei Cross-Origin-Weiterleitungen) zu demonstrieren, auszunutzen und die Korrekturen zu verifizieren.
Das Labor wird mit Docker Compose orchestriert und besteht aus drei isolierten Diensten, die über ein internes Bridge-Netzwerk kommunizieren:
victim_client: Python-basierter Container, der das Reproduktions- und Exploit-Skript (exploit.py) ausführt.target_app: Flask-Webanwendung, die einen verwundbaren Zielserver simuliert, der eine HTTP-302-Cross-Origin-Weiterleitung zu einem externen Origin auslöst.attacker_app: Flask-Logging-Server, der eingehende HTTP-Anfragen erfasst und geleakte Header extrahiert.git clone [https://github.com/deepanshu-khurana/cve-2023-43804-lab.git](https://github.com/deepanshu-khurana/cve-2023-43804-lab.git)
cd cve-2023-43804-lab
docker compose up -d --build
docker compose up -d
docker compose down --volumes
CVE-2023-43804)urllib3< 1.26.17 oder < 2.0.5urllib3 entfernte sensible Authentifizierungs-Header (wie Cookie) nicht, wenn HTTP-302-Weiterleitungen über verschiedene Origins hinweg verfolgt wurden, wodurch nicht vertrauenswürdige Weiterleitungsendpunkte sensible Sitzungstoken abfangen konnten.urllib3 im Client-Container installiert ist:docker exec -it victim_client pip install urllib3==1.26.16
docker exec -it victim_client python3 -u /lab/exploit.py
"status": "EXFILTRATED" zusammen mit dem geleakten Sitzungstoken.docker logs attacker_app zeigt den erfassten sensiblen Cookie-Header.Um den Patch nach Beobachtung des Exploits zu verifizieren:
urllib3 im Client-Container auf die gepatchte Version:docker exec -it victim_client pip install urllib3==1.26.17
docker exec -it victim_client python3 -u /lab/exploit.py
"status": "SECURE", "stolen_cookie": "None / Stripped".attacker_app-Logs bestätigen, dass die eingehende Anfrage Leaked Cookie Header: None enthält.requirements.txt, um sichere Versionen zu erzwingen:urllib3>=1.26.17
remove_headers_on_redirect in benutzerdefinierten Retry-Konfigurationen, wenn Legacy-Runtimes beibehalten werden.victim_client, target_app, attacker_app), wie von Docker Compose zugewiesen. Verwenden Sie docker ps, um die aktiven Containernamen zu überprüfen.5000 und 5001 nicht von anderen lokalen Diensten belegt sind, bevor Sie den Docker-Stack starten.Beim Ausführen des Labors mit verwundbarem urllib3==1.26.16 wird das sensible Authentifizierungs-Cookie bei Cross-Origin-Weiterleitungen abgefangen und erfolgreich vom Angreifer-Server protokolliert.
exploit.py zeigt "status": "EXFILTRATED" zusammen mit dem geleakten Sitzungstoken, verifiziert durch die attacker_app-Logausgabe.Nach dem Upgrade von urllib3 auf die gepatchte Version (1.26.17) entfernt die Bibliothek automatisch den sensiblen Cookie-Header bei Cross-Origin-Weiterleitungen.
Paket-Upgrade auf gepatchte Version:

urllib3 in victim_client via pip install urllib3==1.26.17.Sichere Client-Ausgabe & bereinigte Logs:

exploit.py gibt "status": "SECURE" mit "stolen_cookie": "None / Stripped" zurück, bestätigt durch das Server-Log, das Leaked Cookie Header: None zeigt.