3.7 KiB
Smuggling de solicitudes en downgrades HTTP/2
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
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 esos 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:
![](<../../.gitbook/assets/image