HTTP request smuggling, basic TE.CL vulnerability writeup

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:

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:

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

Deja una respuesta

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