Bypass de seguridad front-end (CL.TE)

Exploiting HTTP request smuggling to bypass front-end security controls, CL.TE vulnerability

Le lab utilise un serveur front-end et un back-end. Le front-end ne prend pas en charge le chunked encoding, tandis que le back-end, lui, l’accepte. L’accès au panneau d’administration situé à /admin est bloqué par le front-end.

L’objectif est de smuggler une requête vers le back-end permettant d’accéder au panneau d’administration, puis de supprimer l’utilisateur carlos.

1. Vérification de la vulnérabilité CL.TE

Le front-end interprète le Content-Length, tandis que le back-end utilise Transfer-Encoding.

Payload de base CL.TE :

Cela renvoie un 200, ce qui confirme que le back-end prend en compte Transfer-Encoding.

2. Injection d’une requête smuggled

Lorsque l’on enchaîne ensuite une requête, le back-end lit la requête smuggled :

Le back-end répond que seuls les utilisateurs locaux peuvent accéder à /admin.

3. Usurpation du host pour paraître local

Pour contourner la restriction, il faut que le back-end croie que la requête provient de localhost.

Tentative initiale :

Mais le serveur renvoie :

Le back-end n’interprète donc pas cette requête comme une nouvelle requête complète.

4. Construction d’une requête smuggled correcte

On ajoute un Content-Length dans la requête smuggled, afin qu’elle soit traitée correctement :

Pour que le back-end lise correctement la requête, on ajuste la taille :

La requête complète envoyée au front-end devient alors :

5. Suppression de l’utilisateur carlos

Il suffit maintenant de remplacer la ligne GET par l’appel à la suppression :

Mis à jour

Ce contenu vous a-t-il été utile ?