
POC para el CVE-2023-32681
Esta es una implementación en Python 3 de CVE-2023-32681, que afecta a clientes que usan requests versión <= 2.30.0.
Según https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4, cuando el servidor emite una redirección 3xx, el agente de usuario debe modificar la solicitud para eliminar ciertos encabezados y campos de la misma.
Los detalles de esos campos se pueden encontrar en https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Específico de este CVE, he resaltado la parte relevante aquí.

La versión requests <= 2.30.0 no eliminaba los encabezados "Proxy-Authorization" al manejar la redirección a "https", filtrando así las credenciales del proxy al servidor redirigido.
Se pueden encontrar más detalles al respecto en
/redirect que redirige el tráfico al segundo servidor ejecutándose en 4431./echoHeaders. Esta ruta devuelve al cliente los encabezados que recibió en la solicitud.Proxy-Authorization, se dice que la versión de requests es vulnerable a "CVE-2023-32681".certFile y keyFile en server/main.go.go run server/main.go. Esto iniciará dos servidores escuchando en los puertos 443 y 4431.go run proxy/main.go. Esto iniciará el servidor proxy en el puerto 8080.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py y observa la salida. Puedes ver que el encabezado "Proxy-Authorization" es devuelto por el servidor en la respuesta. El servidor también imprime los encabezados recibidos en los registros.pip3 install -r script/requirements_request_2_31_0.txtpython3 script/poc.py y observa la salida. Puedes ver que el encabezado "Proxy-Authorization" ahora no está presente en la respuesta del servidor. Lo mismo se puede verificar en los registros del servidor.
