hacktricks/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md

3.7 KiB

Smuggling de solicitudes en downgrades HTTP/2

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Orígenes

El origen principal de esta vulnerabilidad es el hecho de que el proxy inverso va a hablar con el cliente usando HTTP/2, pero luego va a transformar esa comunicación con el servidor de back-end a HTTP/1.1.

El problema con este enfoque es que el usuario va a poder inyectar innecesariamente encabezados en la comunicación HTTP/2 que probablemente no serán verificados por el proxy. Pero luego, cuando se inyectan ciegamente en la comunicación HTTP/1.1, se puede realizar un ataque de smuggling de solicitudes.

Ejemplos

H2.CL Desync

La especificación HTTP/2 indica que el encabezado Content-Length no es necesario pero puede ser indicado. Por lo tanto, el proxy inverso va a tratar todo el contenido enviado por los usuarios como la solicitud, pero luego, cuando se produce el downgrade a HTTP/1.1, este encabezado va a ser inyectado en la solicitud y, por lo tanto, el servidor de back-end tratará la solicitud como 2 solicitudes diferentes, como se puede ver en la imagen a continuación:

H2.TE Desync URL Token Hijack

La especificación HTTP/2 también indica que cualquier mensaje que contenga campos de encabezado específicos de la conexión DEBE ser tratado como malformado... pero si no sigues esta regla, eres vulnerable.

Esta técnica fue abusada en el balanceador de carga de AWS, por lo que asegurarse de que los usuarios accedan a un encabezado Host que apunte a un servidor controlado por el atacante les hará acceder a ese servidor.

H2.TE Desync Header Hijack

Esta es exactamente la misma técnica que antes, pero al revisar las solicitudes, James notó que los clientes le estaban pidiendo que les enviara sus credenciales, por lo que simplemente modificó su servidor para permitir CORS para enviarle las credenciales de las personas:

H2.TE a través