Web Security Academy

HTTP request smuggling - Lab : Basic CL.TE vulnerability

Énoncé et Objectif :

  • Ce lab inclut un serveur front-end et back-end. Le serveur front-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 va recharger la page en interceptant la requête envoyée au serveur front-end ( ici avec le logiciel Burp-Suite ). Elle est de la forme suivante :

On va modifier la méthode GET en POST et ensuite ajouter les entêtes Content-Length ( en définissant bien sa valeur ) et Transfer-Encoding. On ajoute ensuite le caractère "0" pour indiquer la fin de la requête ( si l'entête Transfer-Encoding est pris en compte ). Enfin, on va ajouter le caractère "G" qui va représenter le début de la prochaine requête traitée si le serveur est vulnérable.

On redirige toutes nos modifications vers le serveur. On envoie ensuite une autre requête POST légitime et le serveur nous répond de la manière suivante :

En effet, le serveur back-end a traité une requête commençant par "G" ( comme on l'a indiqué précédemment dans la requête du payload ) et ajouté à la suite le début de la prochaine requête reçue, qui avait la méthode POST. Donc ce serveur est en effet vulnérable à une attaque de type HTTP request sumggling.

Le lab est désormais validé.