Labs de Host Header

Host Header Injection / Password Reset Poisoning

¿Qué es Host Header?

El Host Header Injection abusa de aplicaciones que confían en la cabecera Host (o X-Forwarded-Host) del request. Al manipularla se envenena el enlace de recuperación de contraseña (el token de la víctima llega al atacante), se envenena la caché con URLs hacia tu dominio y, con ciertos proxies, se fuerza un SSRF de routing.

¿Por qué practicar Host Header?

Muchísimas apps construyen enlaces absolutos (reset, verificación, invitaciones) a partir del Host del request sin validarlo. Es un bug fácil de probar pero de alto impacto: el password reset poisoning es account takeover directo. Bounties típicos: $500-$8,000, y más si escala a SSRF de routing.

¿Qué aprenderás con los labs de Host Header?

Aprenderás a manipular el Host y sus variantes de proxy, detectar dónde se refleja o se usa para generar URLs, envenenar el enlace de reset para robar el token de la víctima, envenenar la caché con un Host inesperado, y forzar SSRF cuando el enrutado del edge depende del Host.

Tipos de Host Header que cubrimos

  • Password reset poisoning

    La app construye el enlace de recuperación con el Host del request. Lo cambias a tu dominio y el token de reset de la víctima acaba en tu servidor.

  • Cache poisoning vía Host

    El Host (o X-Forwarded-Host) se refleja en la respuesta y se cachea, sirviendo tu contenido, canonical o redirect a todos los usuarios.

  • Routing-based SSRF

    Un proxy o load balancer enruta según el Host; apuntándolo a un servicio interno fuerzas al edge a hablar con recursos privados.

  • Web cache / dominio inesperado

    Un Host inesperado hace que el back-end genere URLs absolutas, etiquetas canónicas o scripts apuntando a tu dominio.

¿Cómo encontrar y explotar Host Header?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Manipular el Host y sus variantes

    Cambia la cabecera Host y prueba X-Forwarded-Host, X-Host y X-Forwarded-Server. Observa si el valor acaba reflejado o usado para construir enlaces.

    Host: evil.com   ·   X-Forwarded-Host: evil.com
  2. 2

    Detectar dónde se usa el Host

    Busca respuestas que reflejen tu Host (canonical, scripts, redirects) o funciones que generen URLs absolutas con él (emails, enlaces).

    <link rel=canonical href="https://evil.com/...">   ·   Location: https://evil.com/...
  3. 3

    Envenenar el enlace de reset

    Pide un reset de contraseña de una cuenta tuya con Host malicioso y comprueba si el enlace del email apunta a tu dominio.

    POST /forgot-password   Host: evil.com   body: email=yo@x.com   →   enlace: https://evil.com/reset?token=...
  4. 4

    Robar el token de la víctima

    Si funciona, repítelo contra la cuenta de la víctima: cuando pida reset, su token viajará a tu servidor y tomas el control de su cuenta.

    Log de evil.com: GET /reset?token=TOKEN_DE_LA_VICTIMA
  5. 5

    Forzar SSRF de routing

    Si un proxy enruta por Host, apúntalo a localhost o a la metadata cloud para alcanzar servicios internos desde el edge.

    Host: 169.254.169.254   ·   Host: localhost

Preguntas frecuentes

¿Qué es el Host Header Injection?

Es una vulnerabilidad en la que la aplicación confía en la cabecera Host (o X-Forwarded-Host) del request para construir URLs, enrutar o cachear. Manipulándola, el atacante desvía enlaces hacia su dominio, envenena la caché o fuerza al servidor a hablar con recursos internos.

¿Cómo se explota el password reset poisoning?

Se solicita un reset de contraseña enviando un Host o X-Forwarded-Host malicioso. Si la app genera el enlace de recuperación con ese valor, el correo de la víctima contendrá una URL hacia el dominio del atacante; cuando la víctima (o un fetch previo) abre el enlace, el token de reset se filtra y se toma la cuenta.

¿Cómo encontrar Host Header Injection en bug bounty?

Reenvía peticiones cambiando el Host y añadiendo X-Forwarded-Host, y observa si el valor se refleja en la respuesta o en los enlaces generados. El objetivo más rentable es el flujo de reset de contraseña: pide un reset con Host malicioso y revisa a qué dominio apunta el enlace del email.

¿Cómo prevenir el Host Header Injection?

No construyas URLs a partir del Host del request: usa un dominio canónico configurado en el servidor. Valida el Host contra una allowlist, ignora cabeceras de proxy no fiables (X-Forwarded-Host) salvo detrás de un proxy de confianza, y genera los enlaces de reset con una base absoluta fija.

¿Diferencia entre Host Header Injection y SSRF?

El Host Header Injection manipula la cabecera Host para envenenar enlaces, caché o el routing. Cuando el edge enruta según el Host y lo apuntas a un interno, ese caso concreto se convierte en un SSRF de routing. El SSRF genérico, en cambio, abusa de una feature que fetchea una URL que tú controlas, no del Host.

hunters entrenando
650

hunters entrenando

labs de reportes reales
50

labs de reportes reales

completaciones
380

completaciones

en bounties practicados
$200.000

en bounties practicados

40 flags capturadas esta semana·Reportes reales de HackerOne · Bugcrowd · Intigriti·Sin permanencia·Academy gratis
BBLabs · bug bounty en español

Practica Host Header en labs reales

Cada lab de Host Header replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.

Sin tarjeta · Academy gratis · cancela cuando quieras