
POC para o CVE-2023-32681
Esta é uma implementação em Python 3 do CVE-2023-32681, que afeta clientes que usam a requests versão <= 2.30.0.
Conforme https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4, sempre que um redirecionamento 3xx for emitido pelo servidor, o user-agent deve modificar a requisição para remover certos cabeçalhos e campos da requisição.
Detalhes desses campos podem ser encontrados em https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Específico para este CVE, destaquei a parte relevante aqui.

A versão requests <= 2.30.0 não removia os cabeçalhos "Proxy-Authorization" ao lidar com o redirecionamento para "https", vazando assim as credenciais do proxy para o servidor redirecionado.
Mais detalhes sobre o mesmo podem ser encontrados em
/redirect que redireciona o tráfego para o segundo servidor executando na porta 4431./echoHeaders. Esta rota retorna os cabeçalhos recebidos na requisição para o cliente.Proxy-Authorization, então a versão do requests é considerada vulnerável ao "CVE-2023-32681".certFile e keyFile no arquivo server/main.go.go run server/main.go. Isso iniciará dois servidores ouvindo nas portas 443 e 4431.go run proxy/main.go. Isso iniciará o servidor proxy na porta 8080.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py e observe a saída. Você pode ver que o cabeçalho "Proxy-Authorization" é retornado pelo servidor na resposta.
O servidor também imprime os cabeçalhos recebidos nos logs.pip3 install -r script/requirements_request_2_31_0.txtpython3 script/poc.py e observe a saída. Você pode ver que o cabeçalho "Proxy-Authorization" agora não está presente na resposta do servidor.
O mesmo pode ser verificado nos logs do servidor.
