
POC per la CVE-2023-32681
Questa è un'implementazione Python 3 di CVE-2023-32681, che colpisce i client che utilizzano la versione requests <= 2.30.0.
Come da https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4, ogni volta che il server emette un reindirizzamento 3xx, lo user-agent dovrebbe modificare la richiesta per rimuovere determinate intestazioni e campi dalla richiesta.
I dettagli di questi campi sono disponibili su https://www.rfc-editor.org/rfc/rfc9110.html#section-15.4-5. Specifico per questa CVE, ho evidenziato la parte rilevante qui.

La versione requests <= 2.30.0 non rimuoveva le intestazioni "Proxy-Authorization" durante la gestione del reindirizzamento a "https", perdendo così le credenziali del proxy verso il server di reindirizzamento.
Ulteriori dettagli sono disponibili su
/redirect che reindirizza il traffico al secondo server in esecuzione sulla 4431./echoHeaders. Questa rotta restituisce al client le intestazioni ricevute nella richiesta.Proxy-Authorization, la versione di requests è considerata vulnerabile a "CVE-2023-32681".certFile e keyFile in server/main.go.go run server/main.go. Questo avvierà due server in ascolto sulle porte 443 e 4431.go run proxy/main.go. Questo avvierà il server proxy sulla porta 8080.pip3 install -r script/requirements_request_2_30_0.txtpython3 script/poc.py e osserva l'output. Puoi notare che l'intestazione "Proxy-Authorization" viene restituita dal server nella risposta.
Il server stampa inoltre le intestazioni ricevute nei log.pip3 install -r script/requirements_request_2_31_0.txtpython3 script/poc.py e osserva l'output. Puoi notare che l'intestazione "Proxy-Authorization" ora non è più presente nella risposta del server.
La stessa cosa può essere verificata anche nei log del server.
