Come posso controllare il contenuto dell'intestazione HOST HTTP nelle richieste emesse dal mio sito web?

6

Qualcuno ha familiarità con il modo in cui posso pubblicare un link sul mio sito web, che quando viene visitato causerà agli utenti di inviare una richiesta HTTP a un sito di terze parti con contenuto personalizzato nell'intestazione HOST (diversa dall'host reale / dominio a cui viene inviata la richiesta a livello IP)? Un breve esempio per chiarire la mia intenzione: una richiesta inviata a www.example.com:

GET / HTTP/1.1
Host: $$CUSTOM_PAYLOAD$$ (not www.example.com)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

Ho visto diverse discussioni sul tema dell'emissione di richieste con intestazioni CUSTOM, ma questo non è il caso in quanto l'intestazione è un'intestazione legittima accettata dalla parte ricevente. Inoltre, ho visto varie pubblicazioni sugli attacchi (principalmente XSS riflessi) che si basano su input malevoli nell'intestazione HOST, anche se non sono abbastanza sicuro di come possano essere eseguiti.

    
posta user3074662 09.12.2013 - 14:27
fonte

3 risposte

6

Se vuoi che l'utente emetta la richiesta, allora è non possibile per fare questo con XMLHttpRequest:

Terminate these steps if header is a case-insensitive match for one of the following headers:

Accept-Charset

Accept-Encoding

Access-Control-Request-Headers

Access-Control-Request-Method

Connection

Content-Length

Cookie

Cookie2

Date

DNT

Expect

Host

Keep-Alive

Origin

Referer

TE

Trailer

Transfer-Encoding

Upgrade

User-Agent

Via

Tuttavia, ciò era possibile in Flash a causa di un errore nelle versioni 7 e 8 se utilizzato in combinazione con IE:

In IE, it is also possible to overwrite some more sensitive headers (e.g. Host and Content-Length) by appending colon to the header name (this technique was described in [3] in the context of XmlHttpRequest):

req.addRequestHeader("Host:","foobar.site");

    
risposta data 10.12.2013 - 10:08
fonte
3

Usando uno strumento come cURL puoi rilasciare richieste e specificare qualsiasi richiesta tu desideri. Questo post va oltre l'impostazione dell'intestazione Host in una richiesta.

Dal momento che controlli il sito web, sarebbe possibile che il link avvii una richiesta al tuo server che genera una richiesta HTTP personalizzata sul sito di destinazione utilizzando cURL o qualche altro strumento che ti permetta di specificare il Host intestazione?

A seconda del linguaggio di programmazione che si sta utilizzando sul server, si potrebbe essere in grado di farlo direttamente da lì quale sarebbe l'opzione migliore.

    
risposta data 09.12.2013 - 23:42
fonte
1

Aggiornamento : non funziona. Complimenti a OP per averlo provato! Lasciando "rispondi" per salvare gli altri il tempo:)

Dichiarazione di non responsabilità: non l'ho provato e non ho idea se funzionerà:)

Se la tua pagina includeva JavaScript, teoricamente potresti usare XMLHttpRequest e setRequestHeader per generare una richiesta come quella che descrivi.

    
risposta data 09.12.2013 - 16:12
fonte

Leggi altre domande sui tag