16 KiB
Pentestage des API Web
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
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 :
- Services Web (SOAP/XML)
- La documentation utilise le format WSDL et est généralement enregistrée dans le chemin
?wsdl
commehttps://api.example.com/api/?wsdl
- Un exemple de cette documentation peut être trouvé dans http://www.dneonline.com/calculator.asmx (document WSDL dans http://www.dneonline.com/calculator.asmx?wsdl) et vous pouvez voir une demande d'exemple appelant la méthode
Add
dans http://www.dneonline.com/calculator.asmx?op=Add - Pour analyser ces fichiers et créer des demandes d'exemple, vous pouvez utiliser l'outil SOAPUI ou l'extension WSDLer de Burp Suite.
- API REST (JSON)
- La documentation standard est le fichier WADL. Trouvez un exemple ici : https://www.w3.org/Submission/wadl/. Cependant, il existe d'autres moteurs de représentation d'API plus conviviaux pour les développeurs comme https://swagger.io/tools/swagger-ui/ (consultez la démo sur la page)
- Pour analyser ces fichiers et créer des demandes d'exemple, vous pouvez utiliser l'outil Postman
- GraphQL
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 :
⚔️ Les armes dont vous aurez besoin :
🏋️ Testez vos compétences et vos armes :
🚪 Deuxième porte : {{Attaque}}
Attaque RESTful & SOAP :
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 :
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 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? Ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.