HTTP request smuggling

Content-Length (CL)

POST / HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

param1=value1&param2=value2

Transfer-Encoding (TE)

POST / HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked

1d
param1=value1&param2=value2
0

CL.TE

El proxy inverso utiliza el encabezado HTTP Content-Length (CL), el servidor web utiliza el encabezado HTTP Transfer-Encoding (TE).

Ejemplo de identificación donde la respuesta correspondiente al segundo request sea un 405 Method Not Allowed podría revelar que es vulnerable.

Ejemplo de explotación general.

Ejemplo de explotación para obtener acceso a una ruta interna.

Ejemplo de explotación para reflected XSS en HTTP header.

TE.TE

Ofuscar el encabezado HTTP Transfer-Encoding (TE) en uno de los componentes para provocar una vulnerabilidad de CL.TE o TE.CL.

TE.CL

El proxy inverso utiliza el encabezado HTTP Transfer-Encoding (TE), el servidor web utiliza el encabezado HTTP Content-Length (CL).

En la opción Repeater de Burp Suite, es importante desmarcar la opción "Update Content-Length", agregar los dos requests en un grupo de pestañas, y enviarlos utilizando la función "Send group in sequence (single connection)".

Ejemplo de identificación donde la respuesta correspondiente al segundo request sea un 400 Bad Request podría revelar que es vulnerable.

Ejemplo de explotación general (GET).

  • 0x2a = 42 bytes

Ejemplo de explotación general (POST).

  • 0x83 = 131 bytes

Ejemplo de explotación para obtener acceso a una ruta interna.

  • 0x2b = 43 bytes

HTTP/2 downgrading

El proxy inverso utiliza HTTP/2, mientras que el servidor web utiliza HTTP/1.1.

H2.CL / CL.0

El proxy inverso no valida correctamente que el encabezado HTTP Content-Length (CL) proporcionado sea correcto y, en su lugar, reescribe la solicitud a HTTP/1.1 utilizando el encabezado HTTP Content-Length (CL) defectuoso.

Última actualización

¿Te fue útil?