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:

Walkthrough


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.

Walkthrough

Manda la petición al Intruder y pega este payload en la caja de Payload Positions.

shell-session
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.

Walkthrough

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.

Walkthrough

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

Walkthrough

Haz click en Start Attack.

Walkthrough

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.

Walkthrough

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

Walkthrough

Usa la contraseña para iniciar sesión.

Walkthrough