La cosa con l'iniezione di intestazione host è che può consentire a un utente malintenzionato di controllare parte di una risposta. Da un ottimo articolo su Acunetix :
The PHP script in the following example is a typical and dangerous use of the host header.
<script src="http://<?phpecho_SERVER['HOST']?>/script.js">
An attacker can potentially manipulate the code above to produce the following HTML output just by manipulating the host header.
<script src="http://attacker.com/script.js">
Ma se stai manipolando solo la risposta che ottieni, non è molto inutile. Dopotutto, XSS: ingannare te stesso non è così divertente. È necessario modificare la risposta ricevuta dalla vittima, ma non è possibile modificare l'intestazione host della richiesta delle vittime. Cosa fare? Ci sono due modi comuni:
- Avvelenamento da cache: se la risposta che carica uno script da
attacker.com
viene memorizzata nella cache su un server, verrà pubblicata anche su altri. Bingo!
- Reimpostazione della password: se è possibile modificare il link di reimpostazione della password che viene inviato nelle e-mail, è possibile rubare il token di reimpostazione della password quando la vittima lo fa clic. (Nota che questo non sta modificando la risposta HTTP, ma piuttosto una e-mail che il server invia.)
Quindi, se nessuna di queste cose funziona, vuol dire che tutto va bene e bene? Non proprio. Probabilmente ciò significa che non può essere sfruttato al momento, almeno non in modo semplice, ma è ancora negativo e qualcosa che dovrebbe essere riportato in un rapporto pentest. Perché cosa succede se qualcuno cambia la politica della chache un giorno? Non vuoi essere solo una riconfigurazione del server dall'essere acquisita.