É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é.