
POC for the CVE-2023-32681
Dies ist eine Python 3 Implementierung von CVE-2023-32681, die Clients betrifft, die die requests-Bibliothek in Version <= 2.30.0 verwenden.
Gemäß https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4 sollte der User-Agent bei einer vom Server ausgesendeten 3xx-Weiterleitung die Anfrage modifizieren, um bestimmte Header und Felder aus der Anfrage zu entfernen.
Details zu diesen Feldern finden Sie unter https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Spezifisch für diese CVE habe ich den relevanten Teil hier hervorgehoben.

requests-Version <= 2.30.0 hat die "Proxy-Authorization"-Header bei der Verarbeitung der Weiterleitung zu "https" nicht entfernt und somit die Proxy-Zugangsdaten an den umgeleiteten Server weitergegeben.
Weitere Details dazu finden Sie unter
/redirect, die den Datenverkehr zum zweiten Server auf Port 4431 umleitet./echoHeaders. Diese Route gibt die in der Anfrage empfangenen Header an den Client zurück.Proxy-Authorization-Header enthält, gilt die requests-Version als anfällig für "CVE-2023-32681".certFile und keyFile in server/main.go.go run server/main.go. Dadurch werden zwei Server gestartet, die auf Port 443 und 4431 lauschen.go run proxy/main.go. Dadurch wird der Proxy-Server auf Port 8080 gestartet.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py aus und beobachten Sie die Ausgabe. Sie sehen, dass der "Proxy-Authorization"-Header vom Server in der Antwort zurückgegeben wird. Der Server gibt die empfangenen Header auch in den Logs aus.pip3 install -r script/requirements_request_2_31_0.txt aus.python3 script/poc.py aus und beobachten Sie die Ausgabe. Sie sehen, dass der "Proxy-Authorization"-Header jetzt nicht mehr in der Server-Antwort vorhanden ist. Dasselbe kann auch in den Server-Logs überprüft werden.
