REST api parameters pollution

Auteur: Brouettelover 2024-01-25 20:34:48
Categories: > > Tags:

Description

Une api REST place les noms et les valeurs dans son URL.
Comme par exemple :

/api/users/123 - décomposons :

  1. /api représente la racine
  2. /users représente les utilisateurs
  3. /123 représente l'identifiant d'un utilisateur

Par exemple une page qui permet de modifier un utilisateur en fonction de son nom :

La requête envoyé au serveur web sera de ce style :

GET /edit_profile.php?name=peter

Celle envoyé vers l’api REST sera donc :

GET /api/private/users/peter

Un attaquant pourra donc manipuler l’URL du serveur pour exploiter l’API.

On pourrait par exemple envoyer une URL encoder peter/../admin comme paramètre.
Ce qui mènerait vers le chemin admin en passant par celui de peter.

GET /edit_profile.php?name=peter%2f..%2fadmin

Ce qui enverait à l’api :

GET /api/private/users/peter/../admin

Ce qui reviendrait à aller à /api/private/users/admin