Vulnerabilidad HTTP Host header attacks
www.onlinetis.com
Los ataques al encabezado HTTP Host son una vulnerabilidad que ocurre cuando un servidor web utiliza el valor del encabezado Host
para generar enlaces, redirecciones o rutas de archivos de manera incorrecta, sin validación. Si un atacante puede manipular este encabezado, puede redirigir a los usuarios a sitios maliciosos, realizar ataques de restablecimiento de contraseña o envenenar la caché web.
¿Qué es el encabezado Host?
El encabezado Host
es una parte esencial de las solicitudes HTTP/1.1. Le dice al servidor web a qué dominio o nombre de host se dirige la solicitud. Por ejemplo, en una solicitud para http://ejemplo.com/
, el encabezado Host
sería Host: ejemplo.com
.
El problema surge cuando la aplicación web confía ciegamente en el valor de este encabezado, en lugar de utilizar el nombre de host de la configuración del servidor.
Tipos de ataques al encabezado Host
1. Envenenamiento de caché web (Web Cache Poisoning)
Un atacante puede enviar una solicitud con un encabezado Host
manipulado. Si la aplicación usa este valor para generar contenido en la respuesta y un servidor de caché la almacena, todos los usuarios posteriores que soliciten esa página recibirán la versión envenenada. Esto podría llevar a una redirección a un sitio de phishing o a la ejecución de código malicioso.
2. Redirecciones maliciosas
Muchas aplicaciones usan el encabezado Host
para generar redirecciones. Por ejemplo, un sitio web podría redirigir a un usuario de http://ejemplo.com
a http://www.ejemplo.com
. Un atacante puede manipular el encabezado Host
para que la aplicación redirija a los usuarios a un sitio bajo su control, como http://sitio-malicioso.com
.
3. Restablecimiento de contraseña
Algunas aplicaciones envían un correo electrónico para restablecer la contraseña que contiene un enlace con el nombre del host del sitio. Un atacante podría manipular el encabezado Host
para que el enlace de restablecimiento de contraseña apunte a un servidor controlado por él. Si un usuario hace clic en el enlace, el atacante obtendrá el token de restablecimiento y podrá cambiar la contraseña de la cuenta del usuario.
Prevención
Para mitigar esta vulnerabilidad, los desarrolladores y administradores de sistemas deben:
No confiar en el encabezado
Host
: Siempre que sea posible, el servidor debe usar el nombre de host configurado internamente en lugar de confiar en el valor proporcionado por la solicitud.Validar y sanear el encabezado
Host
: Si es necesario usar el encabezadoHost
, se debe validar que su valor coincida con un nombre de dominio conocido. También se deben eliminar caracteres especiales y evitar que se use en contextos de generación de rutas de archivo.Configurar el servidor web de forma segura: En servidores como Apache y Nginx, se pueden configurar
VirtualHosts
oserver_names
para que solo respondan a nombres de host específicos. Las solicitudes con encabezadosHost
no válidos deben ser rechazadas.