hacktricks/pentesting-web/http-request-smuggling/request-smuggling-in-http-2-downgrades.md
2023-06-03 13:10:46 +00:00

3.7 KiB

Smuggling de requête dans les downgrades HTTP/2

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

Origines

La principale origine de cette vulnérabilité est le fait que le proxy inverse va communiquer avec le client en utilisant HTTP/2, mais il va ensuite transformer cette communication avec le serveur back-end en HTTP/1.1.

Le problème avec cette approche est que l'utilisateur va pouvoir injecter des en-têtes inutiles dans la communication HTTP/2 qui ne seront probablement pas vérifiées par le proxy. Mais ensuite, lorsque ceux-ci sont injectés aveuglément dans la communication HTTP/1.1, une attaque de smuggling de requête peut être effectuée.

Exemples

H2.CL Desync

La spécification HTTP/2 indique que l'en-tête Content-Length n'est pas nécessaire mais peut être indiqué. Par conséquent, le proxy inverse va traiter tout le contenu envoyé par les utilisateurs comme la requête, mais ensuite, lorsqu'il descend en HTTP/1.1, cet en-tête va être injecté dans la requête et donc, le back-end va traiter la requête comme 2 requêtes différentes comme vous pouvez le voir sur l'image ci-dessous :

H2.TE Desync URL Token Hijack

La spécification HTTP/2 indique également que tout message contenant des champs d'en-tête spécifiques à la connexion DOIT être considéré comme malformé... mais si vous ne suivez pas cette règle, vous êtes vulnérable.

Cette technique a été exploitée sur le load balancer AWS, donc en s'assurant que les utilisateurs accèdent à un en-tête Host pointant vers un serveur contrôlé par l'attaquant, ils accéderont à ce serveur.

H2.TE Desync Header Hijack

C'est exactement la même technique que précédemment, mais en vérifiant les requêtes, James a remarqué que les clients lui demandaient de lui envoyer leurs informations d'identification, il a donc simplement modifié son serveur pour permettre à CORS de lui envoyer les informations d