Abus d'API - Pentesting Web

Installation du serveur web depuis Github (Abus d'API) :
curl -o docker-compose.yml https://raw.githubusercontent.com/OWASP/crAPI/main/deploy/docker/docker-compose.yml
docker-compose pull
docker-compose -f docker-compose.yml --compatibility up -d
  • Nous enregistrons un nouvel utilisateur :

Reconnaissance des API :
  • Pour trouver des vulnérabilités dans les API, il est important de faire d'abord une bonne reconnaissance. Pour cela, dans la section réseau, capturez la requête comme si c'était avec Burpsuite en utilisant XHR :

!

  • Pour structurer et stocker correctement toutes les API, nous allons utiliser l'outil Postman :

postman & disown &>/dev/null
  • Créons une nouvelle collection où nous rassemblerons toutes les API. Pour les requêtes en POST, nous devrions coller le lien et surtout coller la requête au format brut :

  • Il renvoie le jeton avec la structure JWT de la connexion :

  • Créons une variable avec le nom de accessToken et sa valeur de connexion :

  • Dans la section autorisation, associons la variable au type Bearer Token :

  • Enregistrons toutes les demandes possibles :

  1. Tableau de bord :

  1. Produits :

  1. Commandes :

Vulnérabilités liées à l'abus des API:

Obtention du jeton par force brute :

Vous avez l'option de réinitialiser le mot de passe avec récupération du jeton par e-mail :

Sur le port 8025, il y a un serveur SMTP où nous recevons le jeton :

Nous cliquons sur Mot de passe oublié avec l'e-mail de la personne dont nous voulons changer le mot de passe :

Nous capturons la requête vers l'API :

Nous envoyons la requête en tant que POST avec la structure brute :

Nous utiliserons ffuf pour lancer une attaque par force brute :

Le jeton de confirmation 0172 a renvoyé un code d'état réussi et le mot de passe a été changé automatiquement :

Modifier les prix des produits et augmenter le solde disponible:

Nous recherchons avec ffuf les méthodes possibles de la requête products :

Ce sont toutes les méthodes possibles :

Si nous passons de GET à POST, voici ce qui se passe :

Il s'agit d'une vulnérabilité appelée attaque d'assignation en masse qui vous permet de créer des produits par des requêtes POST. Dans ce cas, nous créerons un produit avec un prix négatif :

De cette manière, il est interprété par le serveur web :

Comme le prix est négatif, chaque fois que nous cliquons sur acheter, 10 000 dollars sont ajoutés à notre solde :

Si dans la requête orders, nous introduisons le numéro du produit avec par exemple une quantité de 100, notre solde sera multiplié par 100 x 10 000 :

Trouver un code de coupon valide :

Nous effectuons la requête de validate-coupon :

Comme le coupon n'est pas correct, le serveur ne nous renvoie rien :

Si nous essayons d'exécuter une injection NoSQL car la base de données est MongoDB, elle nous répond avec le code du coupon :

Mis à jour

Ce contenu vous a-t-il été utile ?