¿Cómo puedo controlar el contenido del encabezado HTTP HOST en las solicitudes emitidas desde mi sitio web?

6

¿Alguien está familiarizado con una forma en la que puedo publicar un enlace en mi sitio web, que cuando acceda a ellos hará que los usuarios emitan una solicitud HTTP a un sitio de terceros con contenido personalizado en el encabezado HOST (diferente del host / dominio al que se envía la solicitud en el nivel de IP)? Un breve ejemplo para aclarar mi intención: una solicitud enviada 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

He visto varias discusiones sobre el tema de la emisión de solicitudes con encabezados CUSTOM, pero este no es el caso, ya que el encabezado es un encabezado legítimo aceptado por la parte receptora. Además, he visto varias publicaciones sobre ataques (principalmente XSS reflejados) que se basan en información maliciosa en el encabezado HOST, aunque no estoy muy seguro de cómo se pueden ejecutar.

    
pregunta user3074662 09.12.2013 - 14:27
fuente

3 respuestas

6

Si desea que el usuario emita la solicitud, es no es posible para hacer esto con un XMLHttpRequest:

  

Termine estos pasos si el encabezado es una coincidencia que no distingue entre mayúsculas y minúsculas para uno de los siguientes encabezados:

     

Aceptar-Charset

     

Aceptar-Codificar

     

Cabeceras de solicitud de control de acceso

     

Método de solicitud de control de acceso

     

Conexión

     

Contenido-longitud

     

Cookie

     

Cookie2

     

Fecha

     

DNT

     

Espera

     

Host

     

Keep-Alive

     

Origen

     

Referente

     

TE

     

Trailer

     

Codificación de transferencia

     

Actualizar

     

Usuario-Agente

     

Vía

Sin embargo, esto solía ser posible en Flash debido a un error en las versiones 7 y 8 cuando se usa en combinación con IE:

  

En IE, también es posible sobrescribir algunos más sensibles   encabezados (por ejemplo, Host y Content-Length) agregando dos puntos a la   Nombre del encabezado (esta técnica se describió en [3] en el contexto   de XmlHttpRequest):

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

    
respondido por el SilverlightFox 10.12.2013 - 10:08
fuente
3

Usando una herramienta como cURL puede emitir solicitudes y especificar cualquier solicitud que desee. Esta publicación pasa por configurar el encabezado Host en una solicitud.

Dado que usted controla el sitio web, sería posible que el enlace inicie una solicitud a su propio servidor que active una solicitud HTTP personalizada al sitio de destino mediante cURL o alguna otra herramienta que le permita especificar el Host encabezado?

Dependiendo del lenguaje de programación que esté utilizando en el lado del servidor, puede hacerlo directamente desde allí, lo que sería una mejor opción.

    
respondido por el Abe Miessler 09.12.2013 - 23:42
fuente
1

Actualizar : esto no funciona. Felicitaciones a OP por intentarlo! Dejando "respuesta" para ahorrarle a otros el tiempo :)

Descargo de responsabilidad: no he probado esto y no tengo idea si funcionará :)

Si su página incluye JavaScript, la teoría podría usar XMLHttpRequest y setRequestHeader para generar una solicitud como la que usted describe.

    
respondido por el gowenfawr 09.12.2013 - 16:12
fuente

Lea otras preguntas en las etiquetas