
Descripción
This lab is vulnerable to request smuggling because the front-end server downgrades HTTP/2 requests and fails to adequately sanitize incoming headers.
To solve the lab, delete the user carlos
by using response queue poisoning to break into the admin panel at /admin
. An admin user will log in approximately every 10 seconds.
The connection to the back-end is reset every 10 requests, so don’t worry if you get it into a bad state – just send a few normal requests to get a fresh connection.
HTTP/2 request splitting via CRLF injection writeup
Dividiremos el laboratorio en dos fases:
Detectar el tipo de vulnerabilidad HTTP smuggling
Primero, tendremos que verificar el tipo de vulnerabilidad HTTP smuggling:

Intentaremos modificar la petición a la raíz como ambos payloads, pero no dará resultado:


Esto nos dice que el ataque debe ser realizado en HTTP/2. Probaremos con la siguiente configuración para comprobar un ataque H2.CL:
Por un lado la petición maligna (con el cálculo del ‘Content-Length’ desactivado en las opciones y son ‘Transfer-Encoding’):

Y luego la petición normal:

Tampoco funciona, no es vulnerable a H2.CL.
Probaremos ahora con una inyección CLRF, añadiendo al Request header la siguiente información:

Nota: Es necesario para que funcione que la petición tenga una cookie de sesión.
Después de enviar la petición varias veces, envenenaremos la cola de respuestas y conseguiremos la cookie de sesión del administrador:

Al cambiarla por la nuestra en el navegador se romperá la página. Actualizaremos varias veces hasta que vuelva a la normalidad y nos deje acceder a ‘Admin panel’, donde borraremos al usuario ‘carlos’ y completaremos el laboratorio:
