Pollution de paramètres dans une URL REST côté serveur

Exploiting server-side parameter pollution in a REST URL

Objectif du laboratoire Se connecter en tant qu’administrator et supprimer l’utilisateur carlos.

1. Fonctionnalité « Mot de passe oublié »

On accède à la fonctionnalité Forgot password et on saisit le nom d’utilisateur administrator.

La requête envoyée côté serveur est la suivante :

Réponse obtenue :

2. Analyse du code JavaScript côté client

Le code JavaScript montre que la valeur username est envoyée telle quelle dans la requête, sans validation serveur supplémentaire.

Cela suggère que la valeur peut être interprétée comme faisant partie du chemin de l’API backend.

3. Tentatives de pollution du paramètre username

  • Ajout d’un # en fin de paramètre :

Réponse :

  • Tentative de traversée de chemins :

Réponse : erreur Not Found provenant du serveur API.

4. Découverte de la documentation OpenAPI

En combinant la traversée de répertoires et le caractère # :

me deucle openapi.jsojn con mucho length

  • Message d'erreur:

Le serveur renvoie une erreur contenant la documentation OpenAPI, révélant les routes internes disponibles, notamment :

5. Exploitation de l’API interne

On adapte le paramètre username pour cibler directement l’API :

Réponse valide avec l’email de l’administrateur.

6. Récupération du token de réinitialisation

En testant d’autres champs exposés par l’API :

Réponse :

7. Réinitialisation du mot de passe administrateur

On utilise le token récupéré pour accéder à la page de réinitialisation :

Cela permet de définir un nouveau mot de passe pour administrator, puis de se connecter et supprimer l’utilisateur carlos.

Mis à jour