
Labo conteneurisé à trois niveaux reproduisant la fuite de cookies urllib3 de CVE-2023-43804 via des redirections cross-origin, avec script d'exploitation et vérification du correctif.
Le dépôt inclut un environnement de laboratoire entièrement conteneurisé à trois niveaux, destiné à démontrer, exploiter et vérifier les correctifs pour CVE-2023-43804 (la fuite de cookies urllib3 se produisant lors des redirections cross-origin).
Le laboratoire est orchestré à l'aide de Docker Compose et se compose de trois services isolés communiquant sur un réseau bridge interne :
victim_client : conteneur Python exécutant le script de reproduction et d'exploitation (exploit.py).target_app : application web Flask simulant un serveur cible vulnérable qui déclenche une redirection cross-origin HTTP 302 vers une origine externe.attacker_app : serveur de journalisation Flask conçu pour capturer les requêtes HTTP entrantes et extraire les en-têtes divulgués.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 ou < 2.0.5urllib3 ne parvenait pas à supprimer les en-têtes d'authentification sensibles (tels que Cookie) lors du suivi des redirections HTTP 302 vers différentes origines, permettant ainsi aux points de redirection non fiables d'intercepter des jetons de session sensibles.urllib3 est installée dans le conteneur client :docker exec -it victim_client pip install urllib3==1.26.16
docker exec -it victim_client python3 -u /lab/exploit.py
"status": "EXFILTRATED" accompagné du jeton de session divulgué.docker logs attacker_app affiche l'en-tête de cookie sensible capturé.Pour vérifier le correctif après avoir observé l'exploitation :
urllib3 dans le conteneur client vers la version corrigée :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 confirment que la requête entrante contient Leaked Cookie Header: None.requirements.txt pour imposer des versions sûres :urllib3>=1.26.17
remove_headers_on_redirect dans des configurations Retry personnalisées si vous devez maintenir des environnements d'exécution hérités.victim_client, target_app, attacker_app) tels qu'attribués par Docker Compose. Utilisez docker ps pour vérifier les noms des conteneurs actifs.5000 et 5001 ne sont pas occupés par d'autres services locaux avant de lancer la pile Docker.Lors de l'exécution du laboratoire avec la version vulnérable urllib3==1.26.16, le cookie d'authentification sensible est intercepté lors des redirections cross-origin et journalisé avec succès par le serveur attaquant.
exploit.py affichant "status": "EXFILTRATED" accompagné du jeton de session divulgué, vérifié par la sortie des journaux de attacker_app.Après la mise à niveau de urllib3 vers la version corrigée (1.26.17), la bibliothèque supprime automatiquement l'en-tête Cookie sensible lors des redirections cross-origin.
Mise à niveau du paquet vers la version corrigée :

urllib3 dans victim_client via pip install urllib3==1.26.17.Sortie client sécurisée et journaux épurés :

exploit.py renvoyant "status": "SECURE" avec "stolen_cookie": "None / Stripped", confirmé par le journal serveur affichant Leaked Cookie Header: None.