Web Security Academy

HTTP request smuggling - Lab : Basic TE.CL vulnerability

Énoncé et objectif :

  • Ce lab inclut un serveur front-end et back-end. Le serveur back-end ne supporte pas l'entête Transfer-Encoding. L'objectif est de faire passer une requête au serveur back-end, de sorte que celui-ci semble utiliser la méthode "GPOST".

Solution :

On lance le lab et on se retrouve dans un blog.

On rafraîchit la page avec et on intercepte la requête envoyée au serveur avec le logiciel Burp-suite. la requête est la suivante :

On va transformer la méthode GET en POST et ajouter quelques entêtes et données :

  • Un entête Content-length ayant comme valeur "4" pour seulement prendre en compte les données jusqu'au mot GPOST. Cela va nous permettre de faire croire au serveur back-end que les données POST s'arrêtent à cet endroit, et donc va considérer la suite comme le début d'une nouvelle requête.

  • Un entête Transfer-Encoding avec un seul chunk de taille 92 octets ( 5c en hexadécimal ), pour rendre notre requête syntaxiquement correcte au niveau du serveur front-end et embarquer notre payload.

Ce qui donne :

On redirige notre requête vers le serveur front-end. On envoie ensuite une autre requête légitime et on reçoit la réponse suivante :

En effet, le serveur back-end a traité une requête commençant par "GPOST" ( comme on l'a indiqué précédemment dans la requête du payload ). Donc ce serveur est en effet vulnérable à une attaque de type HTTP request sumggling.

Le lab est désormais validé.