Web Security Academy

SSRF - Lab : SSRF with filter bypass via open redirection vulnerability

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 à l'adresse http://192.168.0.12:8080/admin.

Solution :

On lance le lab et on se trouve dans un site de commerce :

En accédant aux détails d'un produit, on observe en bas de page qu'il y a la possibilité de vérifier la quantité du stock disponible dans certaines villes :

Lorsqu'on clique sur "Check stock", une requête POST est envoyée au serveur avec comme donnée le chemin d'une l'URL vers une API :

La donnée est la suivante : stockApi=/product/stock/check?productId=2&storeId=1.

Encore en bas de la page, on peut accéder au produit suivant en cliquant sur "Next product". Lorsqu'on clique dessus, la requête GET suivante est envoyée :

Le serveur nous renvoie :

On constate qu'une redirection est effectuée avec le header Location à partir du paramètre "path" de la requête envoyée.

On va utiliser ce paramètre pour que l'API nous renvoie une redirection vers l'interface administrateur, en inscrivant le bon URL.

Il suffit de relancer la requête POST liée à la vérification du stock des produits et modifier les données en écrivant : stockApi=/product/nextProduct?path=http://192.168.0.12:8080/admin. Effectivement, cela fonctionne ! Aucune vérification n'est effectuée car le serveur fait absolument confiance à ce que lui renvoie l'API. le panel administrateur s'affiche :

On clique sur "Delete" pour supprimer le compte de Carlos et on remarque qu'une requête GET qui est envoyée au serveur :

Il suffit donc d'envoyer au serveur la donnée suivante pour mener à bien la suppression : stockApi=/product/nextProduct?path=http://192.168.0.12:8080/admindelete?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 résolu !