El entorno vulnerable tiene ATS (Apache Traffic Server) como proxy frontend, Nginx como servidor backend y PHP procesando el contenido dinámico. Debido a diferencias en cómo ATS y Nginx priorizan los headers Content-Length y Transfer-Encoding, hay un potencial HTTP Request Smuggling. Comienza añadiendo httprequestsmuggling.thm a tu /etc/hosts.
Acceder a la Aplicación
La aplicación web de esta lección usa el link http://httprequestsmuggling.thm/. Tiene un Home, Login y formulario de Contact que permite a los usuarios acceder y mandar feedback al desarrollador. Para demostración, las queries subidas se guardan en /submissions. Debajo una captura de la aplicación:

Explotar la Aplicación
Usando el proxy de Burp Suite, interceptamos una petición mandada al index de la página web. Esta petición se convertirá en la base que usaremos para explotar la aplicación vulnerable.

Manda la petición al Intruder y pega este payload en la caja de Payload Positions.
POST / HTTP/1.1 Host: httprequestsmuggling.thm Content-Type: application/x-www-form-urlencoded Content-Length: 160 Transfer-Encoding: chunked 0 POST /contact.php HTTP/1.1 Host: httprequestsmuggling.thm Content-Type: application/x-www-form-urlencoded Content-Length: 500 username=test&query=§
Desglose del Payload
En una vulnerabilidad CL.TE, como el proxy del frontend prioriza el header Content-Length, se asume que el body son 160 bytes. El frontend asume que es una única petición y la redirige a la pipeline, donde el backend ahora prioriza Transfer-Encoding, finalizando la primera petición POST en el 0 y asumiendo que el segundo POST es una petición diferente.

Ve a la pestaña Payloads y configura el Payload type a Null payloads. Después, en Payload settings, introduce 10000 para generar 10000 null payloads.

Ve a la pestaña Resource pool y crea una nueva.

Haz click en Start Attack.

Después de unos minutos comprueba el directorio /submissions para ver si la petición a contact.php ha sido contrabandeada conteniendo la petición de otros usuarios.

Mira los archivos para comprobar la contraseña que fue añadida al parámetro query.

Usa la contraseña para iniciar sesión.

