Objectif :
Accéder à l'interface administrateur pour supprimer l'utilisateur dont le nom est Carlos.
Dans l'énoncé, il est précisé que cette interface est située dans même serveur que l'application.
Solution :
On lance le lab et on se retrouve dans un site de commerce :
On accède aux détails d'un produit et en bas de la page, on peut vérifier la quantité du stock restante dans certaines villes :
Quand on clique sur "Check stock", une requête POST est envoyée au serveur, avec comme donnée une URL vers une API :
La donnée est : stockApi=http://stock.weliketoshop.net:8080/product/stock/check?productId=1&storeId=1
On va modifier cette URL pour interroger directement le serveur lui-même : http://localhost/.
On envoie la requête et le serveur nous renvoie la réponse suivante :
Le site vers l'API doit être contenu dans l'URL. Il va falloir utiliser certains opérateurs pour contourner cette restriction.
On va d'abord essayer d'écrire le caractère "@", permettant de base d'inclure des identifiants, avec l'URL suivante : http://localhost@stock.weliketoshop.net:8080/product/stock/check?productId=3&storeId=1.On la soumet au serveur et il nous renvoie pas d'erreur.
On tente maintenant d'incorporer le caractère "#" pour forcer le serveur à seulement prendre en compte l'adresse IP "localhost" de la façon suivante : http://localhost#@stock.weliketoshop.net:8080/product/stock/check?productId=3&storeId=1. Le serveur bloque la requête.
On essaye d'encoder le caractère "#" en URL mais toujours pareil, ça ne passe pas.
On tente donc le double encodage et le serveur nous répond différemment :
La requête semble passer.
On écrit maintenant http://localhost%2523@stock.weliketoshop.net/admin et ça fonctionne ! le panel administrateur s'affiche :
On clique sur "Delete" pour supprimer l'utilisateur Carlos et on constate qu'une requête GET est envoyée au serveur :
Il suffit donc de soumettre au serveur l'URL suivante pour mener à bien la suppression : http://localhost%2523@stock.weliketoshop.net/admin/delete?username=carlos.
On revient sur l'interface administrateur pour voir si le compte de Carlos n'est plus présent :
Effectivement, il a été supprimé. le lab est désormais validé !