Come prevenire liniezione di CRLF (splitting della risposta HTTP) in PHP

Ho fatto qualche R&D sulla prevenzione dell’iniezione di CRLF in php, ma non sono riuscito a trovare alcuna soluzione nel mio caso, dato che uso uno strumento della suite burp per iniettare le intestazioni usando i caratteri CRLF come sotto.

// Using my tool i put CRLF characters at the start of my request url GET /%0d%0a%20HackedHeader:By_Hacker controller/action//This generates an header for me like belowHackedHeader:By_Hacker

Così posso modificare tutte le intestazioni facendo come sopra

Questo strumento è come un server proxy, intercetta la richiesta e dà la risposta e possiamo modificare la risposta come vogliamo.

Così modifico solo la risposta iniettando le intestazioni usando i caratteri CRLF. Ora il server risponde a questa richiesta iniettando i caratteri CRLF nella risposta.

Sono solo preoccupato perché campi di intestazione come Pragma, Cache-Control, Last-Modified possono portare ad attacchi di cache poisoning.

header e setcookie contengono mitigazioni contro lo splitting della risposta/intestazione, ma questi non possono aiutarmi a risolvere il problema di cui sopra

Modifica

Quando chiedo a mysite.com contattaci pagina come sotto Questa è la richiesta che ho catturato nel mio strumento come sotto

Request headers:GET /contactus HTTP/1.1Host: mysite.comAccept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-alive

E ottengo la risposta HTML per la richiesta di cui sopra

Ora, per la stessa richiesta utilizzando lo strumento, aggiungo intestazioni personalizzate come segue

Request Headers:GET /%0d%0a%20Hacked_header:By_Hacker/contactus HTTP/1.1Host: mysite.comAccept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveResponse Headers:HTTP/1.1 302 FoundDate: Fri, 10 Jul 2015 11:51:22 GMTServer: Apache/2.2.22 (Ubuntu)Last-Modified: Fri, 10 Jul 2015 11:51:22 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Location: mysite.com Hacked_header:By_Hacker/..Vary: Accept-EncodingContent-Length: 2Keep-Alive: timeout=5, max=120Connection: Keep-AliveContent-Type: text/html; charset=UTF-8

Si può vedere l’intestazione Hacked_header iniettata: By_Hacker / .. nella risposta di cui sopra

C’è qualche modo nella configurazione del server php o apache per prevenire questo tipo di hacking dell’intestazione?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *