Web Security Academy

Business logic vulnerabilities - Lab : High-level logic vulnerability

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 avec des articles en vente affichés :

On se logue au site avec les identifiants donnés dans l'énoncé.

Ensuite, on accède au détail de l'objet "Lightweight l33t leather jacket". En bas de la page, on peut choisir d'ajouter l'item dans le panier avec la quantité désirée :

On inspecte la requête envoyée au serveur lorsqu'on clique sur "Add to cart" :

On essaye de modifier la quantité de l'objet en négative dans le paramètre "quantity". Le serveur nous retourne pas d'erreur.

On accède au panier, et on aperçoit un total négatif :

On essaye de valider ce total mais ça ne fonctionne pas.

On va plutôt tenter de garder un prix positif, qu'on va réduire avec d'autres produits moins chers qu'on va ajouter en quantité négative. On peut prendre par exemple le produit "Packaway Carport" qui coute 63.09$ et on va mettre à -20 sa quantité ( dans la requête ) quand on va l'ajouter dans le panier.

Le prix total du panier devient 75.20$. On valide en cliquant sur "Place order" et ça marche ! La commande est acceptée, validée.

On a réussi à acheter l'objet "Lightweight l33t leather jacket" avec un prix largement moins chère que l'initial.

On peut le voir sur la page de bon de commande :

Le lab est maintenant validé !