Web Security Academy

Business logic vulnerabilities - Lab : Excessive trust in client-side controls

Objectif :

  • Acheter l'objet Lightweight l33t leather jacket à un prix non prévu en exploitant un défaut d'implémention sur le site. On nous donne les identifiants d'un compte utilisateur : wiener / peter.

Solution :

On lance le lab et on se retrouve sur un site de commerce.

L'objet s'intitulant "Lightweight l33t leather jacket" est présenté sur le milieu de la page :

On se connecte au compte donnée dans l'énoncé puis on accède au détail de cet objet. En bas de la page, on peut ajouter dans notre panier cet item avec la quantité voulue :

On clique sur "Add to cart" et une requête POST est envoyée au serveur avec les paramètres suivants :

L'objet coûte 1337 dollars. On va essayer de changer le prix à 0.01 dollars en modifiant le paramètre nommé price (price=1).

On rédige la requête vers le serveur puis on accède au panier en haut de la page. La modification du prix semble avoir pris effet : l'item envoyé vers le panier d'achat coûte effectivement 0.01 dollars :

On valide cet achat en cliquant sur "Place order" :

Notre commande est désormais effectuée et on voit sur le bon de commande la modification du prix sur le total :

Le lab est maintenant validé !