Bypass des contrôles d’accès via le tunneling HTTP/2
Bypassing access controls via HTTP/2 request tunnelling
Description du laboratoire
Ce laboratoire est vulnérable au request smuggling car le serveur frontal rétrograde les requêtes HTTP/2 en HTTP/1 tout en assainissant mal les noms d’en-têtes entrants. Pour résoudre le labo, il faut accéder au panneau d’administration situé à /admin en tant qu’administrateur, puis supprimer l’utilisateur carlos.
Le serveur frontal ne réutilise pas la connexion avec le serveur interne : il n’est donc pas vulnérable aux attaques classiques de request smuggling. En revanche, il reste exposé au tunneling HTTP/2.
Étude du comportement du serveur
On commence par insérer un en-tête personnalisé, par exemple :

Le serveur renvoie alors une erreur, indiquant que l’en-tête est injectable.

Ensuite, si l’on place dans le moteur de recherche quelque chose comme :


le serveur frontal se retrouve confus à cause de cet en-tête supplémentaire. En augmentant le Content-Length à environ 150, on observe que le serveur renvoie des en-têtes internes :

Construction de la requête tunnelisée
On injecte maintenant une nouvelle séquence d’en-têtes :
Pour permettre au tunneling de fonctionner correctement, on place la bonne méthode (HEAD ou GET selon le cas) ainsi que la route souhaitée.

On accède alors au panneau d’administration, où apparaissent les utilisateurs wiener et carlos.

Suppression de l’utilisateur
La suppression se fait en envoyant une requête tunnelisée similaire :
Mis à jour
Ce contenu vous a-t-il été utile ?