Descripción

This lab is vulnerable to request smuggling because the front-end server downgrades HTTP/2 requests even if they have an ambiguous length.

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 15 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.

Response queue poisoning via H2.TE request smuggling writeup

Dividiremos el laboratorio en tres 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.TE:

Por un lado la petición maligna (sin ‘Content-Length’ y con la opción de actualizarlo desactivado):

Y luego la petición normal:

Vemos que el HTTP Smuggling attack es posible, por lo que procedemos a envenenar la cola de peticiones del servidor, para que nos devuelva la del inicio de sesión del administrador. Hay dos métodos para realizar esto:

Método 1: De forma manual

Iremos enviando cada 5 segundos la petición maliciosa hasta que tengamos la siguiente respuesta:

Daremos Click derecho en la respuesta -> Show response in browser, copiaremos el enlace, lo abriremos en el navegador, iremos a ‘Admin panel’ y borraremos al usuario ‘carlos’, completando así el laboratorio:

Método 2: De forma automática con el ‘Intruder’

Nos llevarnos la petición maliciosa al ‘Intruder’ con la siguiente configuración:

Pondremos que se envíe una petición cada 800 ms de forma indefinida:

Desactivaremos la opción de acutalizar el ‘Content-Length’:

Luego filtraremos por el código 3XX. Este método a mi no me dio resultado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *