
Descripción
This lab involves a front-end and back-end server, and the back-end server doesn’t support chunked encoding. The front-end server rejects requests that aren’t using the GET or POST method.
To solve the lab, smuggle a request to the back-end server, so that the next request processed by the back-end server appears to use the method GPOST
.
HTTP request smuggling, basic TE.CL vulnerability writeup
Dividiremos el laboratorio en dos fases:
Detectar la vulnerabilidad TE.CL
TE.CL significa lo siguiente:
- El servidor front-end utiliza la propiedad del encabezado HTTP ‘Transfer-Encoding’.
- El servidor back-end utiliza la propiedad del encabezado HTTP ‘Content-Length’.
Usaremos la siguiente tabla para ayudarnos a detectar cómo y por qué se produce la vulnerabilidad HTTP smuggling del tipo TE.CL:

Entraremos al laboratorio, capturaremos la petición de la raíz ‘/’ con el ‘Logger’ y enviaremos la petición al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater. Allí realizaremos las comprobaciones con los dos exploits de la imagen y los siguientes cambios:
- En Inspector -> Request attributes, cambiamos la versión de HTTP a 1.1.
- Damos Click derecho -> Change request method, para cambiar el método a POST.
- Añadimos la propiedad ‘Transfer-encoding’ con el valor chunked.
- Desactivamos de las opciones al lado de ‘Send’ ‘Update content length’.
- Activamos la opción de ver los caracteres especiales con ‘\n’.
- De manera opcional también se pueden borrar todos los atributos no necesarios para este laboratorio, como se puede ver en la siguiente captura:
Al enviar el primer exploit nos devolerá el siguiente resultado:

Esto es una respuesta del front-end, está leyendo el chunk size de 3, lee ‘tes’ e intenta determinar un chunk size de ‘T’, lo cual genera un error.
Probamos ahora con el segundo exploit, obteniendo el siguiente resultado:

Esto se debe a que el backend está esperando 6 bytes, pero sólo recibe 5: ‘0\r\n\r\n’. Al darnos un time out nos deja claro que esto es un ataque TE.CL.
Preparar la petición de ataque
La petición será la siguiente:

Al enviarla dos veces dará el mensaje ‘Unrecognized method GPOST’, completando así el laboratorio:
