hacktricks/network-services-pentesting/pentesting-web/web-api-pentesting.md

16 KiB

Pentestage des API Web

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Utilisez Trickest pour créer et automatiser des flux de travail alimentés par les outils communautaires les plus avancés au monde.
Obtenez un accès aujourd'hui :

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Informations de base

Principal :

Laboratoires

  • VAmPI: VAmPI est une API vulnérable créée avec Flask et elle inclut des vulnérabilités provenant des 10 principales vulnérabilités OWASP pour les API.

Astuces

SOAP/XML

Ce type d'API peut être vulnérable aux XXE, mais généralement les déclarations DTD sont interdites dans les entrées de l'utilisateur.

Vous pouvez également essayer d'utiliser des balises CDATA pour insérer des charges utiles (tant que le XML est valide)

Vérifier l'accès

Généralement, certains points d'extrémité de l'API auront besoin de plus de privilèges que d'autres. Essayez toujours d'accéder aux points d'extrémité les plus privilégiés à partir de comptes moins privilégiés (non autorisés) pour voir si c'est possible.

CORS

Vérifiez toujours la configuration CORS de l'API, car si elle permet de terminer la requête avec les informations d'identification du domaine de l'attaquant, beaucoup de dommages peuvent être causés via CSRF à partir de victimes authentifiées.

Modèles

Recherchez des modèles d'API à l'intérieur de l'API et essayez de les utiliser pour en découvrir davantage.
Si vous trouvez /api/albums/<album_id>/photos/<photo_id>** ** vous pouvez également essayer des choses comme /api/posts/<post_id>/comment/. Utilisez un fuzzer pour découvrir ces nouveaux points d'extrémité.

Ajouter des paramètres

Quelque chose comme l'exemple suivant pourrait vous donner accès à l'album photo d'un autre utilisateur :
/api/MyPictureList → /api/MyPictureList?user_id=<other_user_id>

Remplacer les paramètres

Vous pouvez essayer de fuzzer les paramètres ou d'utiliser des paramètres que vous avez vus dans d'autres points d'extrémité pour essayer d'accéder à d'autres informations.

Par exemple, si vous voyez quelque chose comme : /api/albums?album_id=<album id>

Vous pouvez remplacer le paramètre album_id par quelque chose de complètement différent et potentiellement obtenir d'autres données : /api/albums?account_id=<account id>

Pollution de paramètres

/api/account?id=<votre identifiant de compte> → /api/account?id=<votre identifiant de compte>&id=<identifiant de compte de l'administrateur>

Paramètre générique

Essayez d'utiliser les symboles suivants comme paramètres génériques : *, %, _, .

  • /api/users/*
  • /api/users/%
  • /api/users/_
  • /api/users/.

Changement de méthode de requête HTTP

Vous pouvez essayer d'utiliser les méthodes HTTP : GET, POST, PUT, DELETE, PATCH, INVENTED pour vérifier si le serveur web vous donne des informations inattendues avec elles.

Type de contenu de la requête

Essayez de jouer avec les types de contenu suivants (en modifiant en conséquence le corps de la requête) pour faire en sorte que le serveur web se comporte de manière inattendue :

  • x-www-form-urlencoded --> user=test
  • application/xml --> <user>test</user>
  • application/json --> {"user": "test"}

Types de paramètres

Si les données JSON fonctionnent, essayez d'envoyer des types de données inattendus comme :

  • {"username": "John"}
  • {"username": true}
  • {"username": null}
  • {"username": 1}
  • {"username": [true]}
  • {"username": ["John", true]}
  • {"username": {"$neq": "lalala"}}
  • toute autre combinaison que vous pouvez imaginer

Si vous pouvez envoyer des données XML, vérifiez les injections XXE.

Si vous envoyez des données POST régulières, essayez d'envoyer des tableaux et des dictionnaires :

  • username[]=John
  • username[$neq]=lalala

Jouer avec les routes

/files/..%2f..%2f + ID de la victime + %2f + nom de fichier de la victime

Vérifier les versions possibles

Les anciennes versions peuvent encore être utilisées et être plus vulnérables que les derniers points d'accès

  • /api/v1/login
  • /api/v2/login\
  • /api/CharityEventFeb2020/user/pp/<ID>
  • /api/CharityEventFeb2021/user/pp/<ID>

Vérifier les versions possibles (approche automatisée)

Extension AutoRepeater Burp : Ajouter une règle de remplacement

  • Type : Chaîne de requête
  • Correspondance : v2 (version supérieure)
  • Remplacer : v1 (version inférieure)

🛡️ Feuille de triche de l'Empire de la sécurité des API


Auteur de la feuille de triche : Momen Eldawakhly (Cyber Guy)

Dans ce référentiel, vous trouverez : des cartes mentales, des astuces, des ressources et tout ce qui concerne la sécurité des API et les tests de pénétration des API. Nos cartes mentales et ressources sont basées sur le TOP 10 API de l'OWASP, notre expérience en matière de tests de pénétration et d'autres ressources pour fournir la ressource de sécurité et de test de pénétration des API la plus avancée et précise sur le WEB !!

🚪 Première porte : {{Reconnaissance}}

La première porte pour entrer dans l'Empire de la sécurité des API est de savoir comment recueillir des informations sur l'infrastructure de l'API et comment effectuer une reconnaissance puissante sur l'API pour extraire les portes cachées qui compromettent toute l'infrastructure, nous vous proposons donc cette carte mentale de reconnaissance de l'API mise à jour avec les derniers outils et méthodologies en matière de reconnaissance de l'API :


Version PDF | Version XMind

⚔️ Les armes dont vous aurez besoin :

🏋️ Testez vos compétences et vos armes :

🚪 Deuxième porte : {{Attaque}}

Attaque RESTful & SOAP :


Version PDF | Version XMind\

Attaque GraphQL :

En raison des attaques limitées dans le GraphQL, nous avons essayé de générer toutes les attaques possibles en fonction de notre expérience dans les tests d'API dans la carte mentale suivante :


Version PDF | Version XMind\

Owasp API Security Top 10

Lisez ce document pour apprendre comment rechercher et exploiter les 10 principales vulnérabilités API d'Owasp : https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf

Liste de contrôle de sécurité des API

{% embed url="https://github.com/shieldfy/API-Security-Checklist" %}

Filtres Logger++ pour la recherche de vulnérabilités des API

https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters

Liste des points d'accès possibles des API

https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d

Outils

  • kiterunner: Excellent outil pour découvrir les points d'accès des API.
kr scan https://domain.com/api/ -w routes-large.kite -x 20 # Downloaded from kiterunner repo
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • automatic-api-attack-tool : Outil d'attaque d'API personnalisable d'Imperva qui prend une spécification d'API en entrée, génère et exécute des attaques basées sur celle-ci en sortie.
  • Astra : Un autre outil de test d'API pour trouver plusieurs vulnérabilités web différentes.
  • Susanoo : Scanner de vulnérabilité d'API.
  • restler-fuzzer : RESTler est le premier outil de fuzzing d'API REST étatique pour tester automatiquement les services cloud via leurs API REST et trouver des bugs de sécurité et de fiabilité dans ces services. Pour un service cloud donné avec une spécification OpenAPI/Swagger, RESTler analyse l'ensemble de sa spécification, puis génère et exécute des tests qui exploitent le service via son API REST.
  • TnT-Fuzzer: TnT-Fuzzer est un fuzzer OpenAPI (swagger) écrit en python.
  • APIFuzzer: APIFuzzer lit la description de votre API et fuzz les champs étape par étape pour valider si votre application peut gérer les paramètres fuzzés.
  • API-fuzzer : Le gem API_Fuzzer accepte une requête API en entrée et renvoie les vulnérabilités possibles dans l'API.
  • race-the-web : Teste les conditions de concurrence dans les applications web en envoyant un nombre spécifié de requêtes vers une URL cible (ou des URL) simultanément, puis compare les réponses du serveur pour déterminer leur unicité.

Utilisez Trickest pour créer et automatiser facilement des flux de travail alimentés par les outils communautaires les plus avancés au monde.
Obtenez un accès dès aujourd'hui :

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥