# Request Smuggling em Downgrades HTTP/2
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Origens A principal origem dessa vulnerabilidade é o fato de que o **proxy reverso** vai **conversar com o cliente** usando **HTTP/2**, mas então ele vai **transformar** essa **comunicação** com o **servidor back-end** em **HTTP/1.1**. ![](<../../.gitbook/assets/image (636) (1).png>) O problema com essa abordagem é que o **usuário** será capaz de **injetar** cabeçalhos desnecessários na **comunicação HTTP/2** que provavelmente **não serão verificados** pelo proxy. Mas então, quando esses são **injetados cegamente na comunicação HTTP/1.1**, **um ataque de smuggling de request pode ser realizado**. ## Exemplos ### H2.CL Desync A especificação do HTTP/2 indica que o cabeçalho **Content-Length não é necessário, mas pode ser indicado**. Portanto, o **proxy reverso** vai **tratar todo o conteúdo enviado pelos usuários** como a solicitação, mas então, quando **rebaixado para HTTP/1.1**, esse **cabeçalho** será **injetado** na **solicitação** e, portanto, o **back-end tratará a solicitação como 2 solicitações diferentes** como você pode ver na imagem abaixo: ![](<../../.gitbook/assets/image (639).png>) ### H2.TE Desync URL Token Hijack A especificação do HTTP/2 também indica que **qualquer mensagem contendo campos de cabeçalho específicos da conexão DEVE ser tratada como malformada... mas se você não seguir essa regra, você está vulnerável**. Essa técnica foi abusada no balanceador de carga da AWS, então garantir que os usuários acessem um cabeçalho Host apontando para um servidor controlado pelo atacante fará com que eles acessem esse servidor. ![](<../../.gitbook/assets/image (631) (1).png>) ### H2.TE Desync Header Hijack Esta é exatamente a mesma técnica que antes, mas verificando as solicitações, James percebeu que os clientes estavam pedindo para enviar suas credenciais, então ele simplesmente modificou seu servidor para permitir o CORS para enviar as credenciais das pessoas para ele: ![](<../../.gitbook/assets/image (662) (1) (1) (1)