
En esta sección, analizaremos cómo las configuraciones incorrectas y la lógica comercial defectuosa pueden exponer los sitios web a una variedad de ataques a través del encabezado del host HTTP. Describiremos la metodología de alto nivel para identificar sitios web que son vulnerables a los ataques de encabezado de host HTTP y demostraremos cómo puede aprovechar esto. Finalmente, proporcionaremos una guía general sobre cómo puede proteger sus propios sitios web.

¿Qué es el encabezado del host HTTP?
El encabezado de host HTTP es un encabezado de solicitud obligatorio a partir de HTTP/1.1. Especifica el nombre de dominio al que el cliente quiere acceder. Por ejemplo, cuando un usuario visita https://portswigger.net/web-security
, su navegador redactará una solicitud que contiene un encabezado de Host de la siguiente manera:
GET /web-security HTTP/1.1
Host: portswigger.net
En algunos casos, como cuando la solicitud ha sido reenviada por un sistema intermediario, el valor del Host puede modificarse antes de que llegue al componente de back-end previsto. Discutiremos este escenario con más detalle a continuación.
Solicita una cotización del mejor escaner de vulnerabilidades de sitios web y aplicativos expuestos, con precios por anualidad e intercambio de targets, BURP SUITE ENTERPRISE es el único que lo ofrece, cambia YA!
¿Cuál es el propósito del encabezado del host HTTP?
El propósito del encabezado del host HTTP es ayudar a identificar con qué componente de back-end desea comunicarse el cliente. Si las solicitudes no contenían encabezados de Host, o si el encabezado de Host tenía un formato incorrecto de alguna manera, esto podría generar problemas al enrutar las solicitudes entrantes a la aplicación deseada.
Históricamente, esta ambigüedad no existía porque cada dirección IP solo albergaba contenido para un único dominio. Hoy en día, en gran parte debido a la tendencia cada vez mayor de las soluciones basadas en la nube y la subcontratación de gran parte de la arquitectura relacionada, es común que se pueda acceder a múltiples sitios web y aplicaciones en la misma dirección IP. Este enfoque también ha aumentado su popularidad en parte como resultado del agotamiento de las direcciones IPv4.
Cuando se puede acceder a varias aplicaciones a través de la misma dirección IP, esto suele ser el resultado de uno de los siguientes escenarios.
Alojamiento Virtual
Un escenario posible es cuando un único servidor web alberga varios sitios web o aplicaciones. Esto podría ser varios sitios web con un solo propietario, pero también es posible que los sitios web con diferentes propietarios se alojen en una única plataforma compartida. Esto es menos común de lo que solía ser, pero aún ocurre con algunas soluciones SaaS basadas en la nube.
En cualquier caso, aunque cada uno de estos sitios web distintos tendrá un nombre de dominio diferente, todos comparten una dirección IP común con el servidor. Los sitios web alojados de esta manera en un único servidor se conocen como «hosts virtuales».
Para un usuario normal que accede al sitio web, un host virtual a menudo es indistinguible de un sitio web alojado en su propio servidor dedicado.
Enrutamiento del tráfico a través de un intermediario
Otro escenario común es cuando los sitios web están alojados en distintos servidores back-end, pero todo el tráfico entre el cliente y los servidores se enruta a través de un sistema intermediario. Esto podría ser un balanceador de carga simple o un servidor proxy inverso de algún tipo. Esta configuración es especialmente frecuente en los casos en que los clientes acceden al sitio web a través de una red de entrega de contenido (CDN).
En este caso, aunque los sitios web estén alojados en servidores back-end separados, todos sus nombres de dominio se resuelven en una única dirección IP del componente intermediario. Esto presenta algunos de los mismos desafíos que el alojamiento virtual porque el proxy inverso o el balanceador de carga necesitan conocer el back-end apropiado al que deben enrutar cada solicitud.
¿Cómo resuelve este problema el encabezado del host HTTP?
En ambos escenarios, se confía en el encabezado Host para especificar el destinatario deseado. Una analogía común es el proceso de enviar una carta a alguien que vive en un edificio de departamentos. Todo el edificio tiene la misma dirección, pero detrás de esta dirección hay muchos apartamentos diferentes que necesitan recibir el correo correcto de alguna manera. Una solución a este problema es simplemente incluir el número de apartamento o el nombre del destinatario en la dirección. En el caso de los mensajes HTTP, el encabezado Host tiene un propósito similar.
Cuando un navegador envía la solicitud, la URL de destino se resolverá en la dirección IP de un servidor en particular. Cuando este servidor recibe la solicitud, se refiere al encabezado del host para determinar el back-end previsto y reenvía la solicitud en consecuencia.
Solicita una cotización del mejor escaner de vulnerabilidades de sitios web y aplicativos expuestos, con precios por anualidad e intercambio de targets, BURP SUITE ENTERPRISE es el único que lo ofrece, cambia YA!
¿Qué es un ataque de encabezado de host HTTP?
Los ataques de encabezado de Host HTTP explotan sitios web vulnerables que manejan el valor del encabezado de Host de una manera no segura. Si el servidor confía implícitamente en el encabezado del host y no lo valida o escapa correctamente, un atacante puede usar esta entrada para inyectar cargas dañinas que manipulan el comportamiento del lado del servidor. Los ataques que implican la inyección de una carga útil directamente en el encabezado del host se conocen a menudo como ataques de «inyección de encabezado del host».
Las aplicaciones web estándar normalmente no saben en qué dominio están implementadas a menos que se especifique manualmente en un archivo de configuración durante la instalación. Cuando necesitan saber el dominio actual, por ejemplo, para generar una URL absoluta incluida en un correo electrónico, pueden recurrir a recuperar el dominio del encabezado del Host:
<a href="https://_SERVER['HOST']/support">Contact support</a>
El valor del encabezado también se puede usar en una variedad de interacciones entre diferentes sistemas de la infraestructura del sitio web.
Como el encabezado del host es, de hecho, controlable por el usuario, esta práctica puede generar una serie de problemas. Si la entrada no se escapa o valida correctamente, el encabezado del Host es un vector potencial para explotar una variedad de otras vulnerabilidades, en particular:
- Envenenamiento de caché web
- Defectos de lógica empresarial en funcionalidad específica
- SSRF basado en enrutamiento
- Vulnerabilidades clásicas del lado del servidor, como inyección de SQL
¿Cómo surgen las vulnerabilidades del encabezado del host HTTP?
Las vulnerabilidades del encabezado del host HTTP generalmente surgen debido a la suposición errónea de que el encabezado no es controlable por el usuario. Esto crea una confianza implícita en el encabezado del host y da como resultado una validación inadecuada o el escape de su valor, aunque un atacante puede modificarlo fácilmente con herramientas como Burp Proxy.
Incluso si el encabezado del Host en sí mismo se maneja de manera más segura, dependiendo de la configuración de los servidores que se ocupan de las solicitudes entrantes, el Host puede anularse potencialmente al inyectar otros encabezados. A veces, los propietarios de sitios web no saben que estos encabezados son compatibles de forma predeterminada y, como resultado, es posible que no se traten con el mismo nivel de escrutinio.
De hecho, muchas de estas vulnerabilidades surgen no por una codificación insegura sino por una configuración insegura de uno o más componentes en la infraestructura relacionada. Estos problemas de configuración pueden ocurrir porque los sitios web integran tecnologías de terceros en su arquitectura sin comprender necesariamente las opciones de configuración y sus implicaciones de seguridad.
Explotación de vulnerabilidades de encabezado de host HTTP
A estas alturas, debería tener una buena comprensión de lo que es el encabezado del host HTTP. Para los pentesters y los cazadores de recompensas de errores, hemos creado una guía adicional sobre cómo puede identificar y explotar este tipo de vulnerabilidades por sí mismo. También proporcionamos algunos LABS deliberadamente vulnerables para que pueda practicar algunas de estas técnicas.
Cómo prevenir ataques de encabezado de host HTTP
Para evitar ataques de encabezado de Host HTTP, el enfoque más simple es evitar usar el encabezado de Host por completo en el código del lado del servidor. Vuelva a verificar si cada URL realmente necesita ser absoluta. A menudo encontrará que puede usar una URL relativa en su lugar. Este simple cambio puede ayudarlo a prevenir vulnerabilidades de envenenamiento de caché web en particular.
Otras formas de prevenir ataques de encabezado de host HTTP incluyen:
Proteger URLs absolutas
Cuando tenga que usar direcciones URL absolutas, debe solicitar que el dominio actual se especifique manualmente en un archivo de configuración y hacer referencia a este valor en lugar del encabezado del host. Este enfoque eliminaría la amenaza de envenenamiento por restablecimiento de contraseña, por ejemplo.
Validar el encabezado del Host
Si debe usar el encabezado Host, asegúrese de validarlo correctamente. Esto debería implicar compararlo con una lista blanca de dominios permitidos y rechazar o redirigir cualquier solicitud de hosts no reconocidos. Debe consultar la documentación de su marco para obtener orientación sobre cómo hacer esto. Por ejemplo, el marco Django proporciona la ALLOWED_HOSTS
opción en el archivo de configuración. Este enfoque reducirá su exposición a los ataques de inyección de encabezado de Host.
No admite encabezados de anulación de host
También es importante verificar que no admita encabezados adicionales que puedan usarse para construir estos ataques, en particular X-Forwarded-Host
. Recuerde que estos pueden ser compatibles de forma predeterminada.
Lista blanca de dominios permitidos
Para evitar ataques basados en enrutamiento en la infraestructura interna, debe configurar su balanceador de carga o cualquier proxy inverso para reenviar solicitudes solo a una lista blanca de dominios permitidos.
Tenga cuidado con los hosts virtuales solo internos
Cuando utilice alojamiento virtual, debe evitar alojar aplicaciones y sitios web solo internos en el mismo servidor que el contenido público. De lo contrario, los atacantes pueden acceder a los dominios internos a través de la manipulación del encabezado del host.
Si te ha gustado, ¡compártelo con tus amigos!
Por favor déjanos saber qué piensas sobre este artículo
¿Cómo calificarías este contenido?
Promedio de puntuación 5 / 5. Recuento de votos: 1
Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.
¡Siento que este contenido no te haya sido útil!
Dime, ¿cómo puedo mejorar este contenido?