HTTP request smuggling, confirming a TE.CL vulnerability via differential responses writeup

Descripción

This lab involves a front-end and back-end server, and the back-end server doesn’t support chunked encoding.

To solve the lab, smuggle a request to the back-end server, so that a subsequent request for / (the web root) triggers a 404 Not Found response.

HTTP request smuggling, confirming a TE.CL vulnerability via differential responses writeup

Dividiremos el laboratorio en dos fases:

Detectar la vulnerabilidad TE.CL

TE.CL significa lo siguiente:

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:

  1. En Inspector -> Request attributes, cambiamos la versión de HTTP a 1.1.
  2. Damos Click derecho -> Change request method, para cambiar el método a POST.
  3. Añadimos la propiedad ‘Transfer-encoding’ con el valor chunked.
  4. Desactivamos de las opciones al lado de ‘Send’ ‘Update content length’.
  5. Activamos la opción de ver los caracteres especiales con ‘\n’.
  6. 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:

Enviaremos esta petición y luego la petición del ‘Logger’ normal. Veremos que la petición del ‘Logger’ devuelve un 404, completando así el laboratorio:

Deja una respuesta

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