
POC pour CVE-2023-32681
Ceci est une implémentation Python 3 de CVE-2023-32681, affectant les clients utilisant la version <= 2.30.0 de la bibliothèque requests.
Selon https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4, lorsqu'une redirection 3xx est émise par le serveur, l'agent utilisateur doit modifier la requête pour en supprimer certains en-têtes et champs.
Les détails de ces champs se trouvent sur https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Spécifiquement pour cette CVE, j'ai mis en évidence la partie pertinente ci-dessous.

La version <= 2.30.0 de requests ne supprimait pas les en-têtes 'Proxy-Authorization' lors de la gestion de la redirection vers 'https', ce qui entraînait la fuite des informations d'identification du proxy vers le serveur redirigé.
Plus de détails à ce sujet peuvent être trouvés sur
/redirect qui redirige le trafic vers le second serveur fonctionnant sur le port 4431./echoHeaders. Cette route renvoie au client les en-têtes reçus dans la requête.Proxy-Authorization, alors la version de requests est considérée comme vulnérable à CVE-2023-32681.certFile et keyFile dans server/main.go.go run server/main.go. Cela démarrera deux serveurs écoutant sur les ports 443 et 4431.go run proxy/main.go. Cela démarrera le serveur proxy sur le port 8080.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py et observez la sortie. Vous pouvez voir que l'en-tête 'Proxy-Authorization' est renvoyé par le serveur dans la réponse. Le serveur affiche également les en-têtes reçus dans les logs.pip3 install -r script/requirements_request_2_31_0.txtpython3 script/poc.py et observez la sortie. Vous pouvez voir que l'en-tête 'Proxy-Authorization' n'est maintenant plus présent dans la réponse du serveur. Cela peut également être vérifié dans les logs du serveur.



