
Lab containerizzato a tre livelli che riproduce la fuga di cookie di urllib3 CVE-2023-43804 tramite redirect cross-origin, con script di exploit e verifica della patch.
Il repository include un ambiente di laboratorio completamente containerizzato a tre livelli, pensato per dimostrare, sfruttare e verificare le correzioni per CVE-2023-43804 (il Cookie Leak di urllib3 che si verifica durante i redirect cross-origin).
Il laboratorio è orchestrato tramite Docker Compose ed è composto da tre servizi isolati che comunicano su una rete bridge interna:
victim_client: container basato su Python che esegue lo script di riproduzione ed exploit (exploit.py).target_app: applicazione web Flask che simula un server target vulnerabile che attiva un redirect cross-origin HTTP 302 verso un'origine esterna.attacker_app: server di logging Flask progettato per catturare le richieste HTTP in ingresso ed estrarre gli header divulgati.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 o < 2.0.5urllib3 non riusciva a rimuovere gli header di autenticazione sensibili (come Cookie) quando seguiva redirect HTTP 302 tra origini diverse, consentendo a endpoint di redirezione non attendibili di intercettare token di sessione sensibili.urllib3 sia installata all'interno del container client:docker exec -it victim_client pip install urllib3==1.26.16
docker exec -it victim_client python3 -u /lab/exploit.py
"status": "EXFILTRATED" insieme al token di sessione divulgato.docker logs attacker_app mostra l'header cookie sensibile catturato.Per verificare la patch dopo aver osservato l'exploit:
urllib3 all'interno del container client alla versione corretta: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 confermano che la richiesta in ingresso contiene Leaked Cookie Header: None.requirements.txt per imporre versioni sicure:urllib3>=1.26.17
remove_headers_on_redirect in configurazioni Retry personalizzate, se si mantengono runtime legacy.victim_client, target_app, attacker_app) come assegnati da Docker Compose. Usare docker ps per verificare i nomi dei container attivi.5000 e 5001 non siano occupate da altri servizi locali prima di avviare lo stack Docker.Quando si esegue il laboratorio con urllib3==1.26.16 vulnerabile, il cookie di autenticazione sensibile viene intercettato durante i redirect cross-origin e registrato con successo dal server dell'attaccante.
exploit.py che mostra "status": "EXFILTRATED" insieme al token di sessione divulgato, verificato dall'output dei log di attacker_app.Dopo aver aggiornato urllib3 alla versione corretta (1.26.17), la libreria rimuove automaticamente l'header Cookie sensibile durante i redirect cross-origin.
Aggiornamento del Pacchetto alla Versione Corretta:

urllib3 all'interno di victim_client tramite pip install urllib3==1.26.17.Output Sicuro del Client e Log Ripuliti:

exploit.py che restituisce "status": "SECURE" con "stolen_cookie": "None / Stripped", confermato dal log del server che mostra Leaked Cookie Header: None.