# 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**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/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**. ![](<../../.gitbook/assets/image (636) (1).png>) 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: ![](<../../.gitbook/assets/image (639).png>) ### 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. ![](<../../.gitbook/assets/image (631) (1).png>) ### 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