
Laboratório conteinerizado de três camadas que reproduz o vazamento de cookie do urllib3 CVE-2023-43804 por meio de redirecionamentos de origem cruzada, com script de exploração e verificação de patch.
O repositório inclui um ambiente de laboratório totalmente conteinerizado, de três camadas, destinado a demonstrar, explorar e verificar as correções para o CVE-2023-43804 (o Vazamento de Cookie do urllib3 que ocorre durante redirecionamentos de origem cruzada).
O laboratório é orquestrado usando Docker Compose e consiste em três serviços isolados que se comunicam através de uma rede bridge interna:
victim_client: Contêiner baseado em Python que executa o script de reprodução e exploração (exploit.py).target_app: Aplicação web Flask que simula um servidor alvo vulnerável que aciona um redirecionamento de origem cruzada HTTP 302 para uma origem externa.attacker_app: Servidor de registro Flask projetado para capturar requisições HTTP recebidas e extrair cabeçalhos vazados.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 falhava em remover cabeçalhos de autenticação sensíveis (como Cookie) ao seguir redirecionamentos HTTP 302 entre origens diferentes, permitindo que endpoints de redirecionamento não confiáveis interceptassem tokens de sessão sensíveis.urllib3 está instalada dentro do contêiner cliente:docker exec -it victim_client pip install urllib3==1.26.16
docker exec -it victim_client python3 -u /lab/exploit.py
"status": "EXFILTRATED" juntamente com o token de sessão vazado.docker logs attacker_app exibe o cabeçalho de cookie sensível capturado.Para verificar a correção após observar a exploração:
urllib3 dentro do contêiner cliente para a versão corrigida: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 confirmam que a requisição recebida contém Leaked Cookie Header: None.requirements.txt para impor versões seguras:urllib3>=1.26.17
remove_headers_on_redirect em configurações personalizadas de Retry caso mantenha runtimes legados.victim_client, target_app, attacker_app) conforme atribuídos pelo Docker Compose. Use docker ps para verificar os nomes dos contêineres ativos.5000 e 5001 não estão ocupadas por outros serviços locais antes de iniciar a stack Docker.Ao executar o laboratório com o urllib3==1.26.16 vulnerável, o cookie de autenticação sensível é interceptado através de redirecionamentos de origem cruzada e registrado com sucesso pelo servidor atacante.
exploit.py exibindo "status": "EXFILTRATED" juntamente com o token de sessão vazado, verificado pela saída de log do attacker_app.Após atualizar o urllib3 para a versão corrigida (1.26.17), a biblioteca remove automaticamente o cabeçalho Cookie sensível durante redirecionamentos de origem cruzada.
Atualização do Pacote para a Versão Corrigida:

urllib3 dentro do victim_client via pip install urllib3==1.26.17.Saída Segura do Cliente e Logs Removidos:

exploit.py retornando "status": "SECURE" com "stolen_cookie": "None / Stripped", confirmado pelo log do servidor mostrando Leaked Cookie Header: None.