
L'outil d'attaque API en un seul coup - trouve l'URL de l'API à partir de la racine donnée et simule les attaques automatisées
Un scanner de sécurité d'API en boîte noire à pipeline complet écrit en Python. Il énumère les endpoints, identifie les paramètres, sonde les méthodes HTTP, teste la logique d'authentification/d'autorisation et exécute des simulations d'attaques standard de l'OWASP API Top 10 (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration, etc.), ainsi qu'un fuzzer de fiabilité de style RESTler qui traque les crashs/500s indépendamment de toute catégorie OWASP.
Tous les scripts principaux sont conçus pour être stdlib-only (bibliothèque standard uniquement). Si des outils ou bibliothèques externes ne sont pas présents sur le système, apiharvester bascule automatiquement vers des implémentations pure-Python pour garantir une exécution immédiate.
apiharvester/ — Le répertoire principal du package Python. Exécuter avec python3 -m apiharvester.scripts/check_requirements.sh — Vérifie les prérequis binaires + payloads.scripts/install_requirements.sh — Télécharge les fichiers de payloads SecLists requis et installe éventuellement les binaires (via go install et pip).apiharvester.py — Une distribution autonome du scanner en un seul fichier.api_deep_discovery.py — Crawler dynamique utilisant le code du navigateur headless Katana pour la découverte dynamique des endpoints SPA/XHR.api_intelligence_engine.py — Agrégateur de pipeline et classificateur passif de vulnérabilités.apisec.py — Version alternative du scanner de sécurité en un seul fichier.requirements.txt — Liste des dépendances Python (principalement pour les accélérateurs optionnels basés sur Python).payloads/ — Fichiers de wordlists et de payloads pour la reconnaissance :
params.txt — 25 889 candidats de noms de paramètres pour les tests d'endpoints d'APIdirectories.txt — 62 281 motifs de chemins d'API courants et noms de répertoiressubdomains.txt — 5 000 variantes de sous-domaines pour la découverte d'APIkiterunner/ — Fichiers de schémas de routes Kiterunner pour l'énumération accélérée des endpointsVérifier les prérequis : Exécutez le script en lecture seule pour vérifier si les outils/payloads principaux sont disponibles :
./scripts/check_requirements.sh
Installer les outils optionnels et les fichiers de payloads : Exécutez le script d'installation pour récupérer automatiquement les top wordlists SecLists, les schémas de routes Kiterunner et installer les accélérateurs d'outils :
./scripts/install_requirements.sh
Installer les packages Python :
pip3 install -r requirements.txt
Exécutez le scanner directement contre un domaine cible :
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (positionnel) : Domaine FQDN à scanner.--auth : Jeton d'accès à privilèges élevés pour les vérifications authentifiées (par exemple, session utilisateur valide).--auth2 : Jeton d'accès à faibles privilèges pour les tests BOLA / BFLA / d'escalade de privilèges inter-comptes.--threads : Taille du pool de threads (par défaut : 20).--timeout : Délai d'expiration des requêtes HTTP en secondes (par défaut : 10).--burst : Nombre de requêtes rapides pour la vérification du rate-limiting (par défaut : 20).--json : Enregistrer le rapport au format JSONL (findings JSON délimités par ligne).--html : Enregistrer le rapport du tableau de bord HTML interactif.--output-dir : Remplacer le chemin du répertoire de sortie par défaut (par exemple, ./scans/example.com).--skip-recon : Ignorer les phases de reconnaissance, utiliser les fichiers de sortie existants d'une exécution précédente.--recon-dir : Charger un répertoire de sortie de reconnaissance préexistant et exécuter uniquement les phases d'attaque.--attacks-only : Exécuter uniquement les phases d'attaque (implique --skip-recon).--attacks : Liste d'attaques séparées par des virgules à exécuter. Par défaut : toutes. Disponibles :
bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
OWASP API Top 10 (API1–API10:2023) :
bola) — Broken Object-Level Authorization. Teste les endpoints d'ID d'objet avec du fuzzing d'ID (0, 1, 2, 99, "admin", "test", variantes UUID, etc.) et des jetons d'authentification différentiels.broken_auth) — Découverte d'endpoints non authentifiés, cassage de secret faible JWT, contournement alg=none, altération de claims, injection kid, plus les contournements de méthode OPTIONS/HEAD.mass_assignment) — Injection de champs d'escalade de privilèges dans les corps PUT/PATCH (role, is_admin, verified, balance, etc.).rate_limit) — Envoie 20+ requêtes rapides ; signale les endpoints renvoyant 200 au lieu de 429 Retry-After.bfla) — Broken Function-Level Authorization. Teste les chemins sensibles (/admin, /roles, /impersonate, etc.) avec et sans jeton à faibles privilèges.business_logic) — Violations de workflow/machine à états (par exemple, mise à jour d'une commande après paiement).ssrf) — Teste la falsification de requête côté serveur via des paramètres d'URL et des corps de requête.misconfiguration) — CORS (actif : envoie une Origin non fiable), en-têtes de sécurité manquants, erreurs verbeuses, fuites de bannière serveur.inventory) — Endpoints non documentés, endpoints abandonnés, interfaces d'administration exposées.sspp) — Unsafe Server-Side Post Processing (injection de template, injection XPath, etc.).Attaques bonus :
injection) — Injection SQL, XSS, injection de commande (basée sur les erreurs + aveugle basée sur le temps).reliability) — Fuzzing de style RESTler : tests de limites/d'entrées malformées pour trouver des crashs 5xx et des bugs de fiabilité serveur (indépendamment des catégories OWASP).secrets) — Correspondance de motifs pour les identifiants divulgués dans les corps de réponse : AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs, et affectations de secrets génériques (api_key=..., password=..., etc.).Scan complet avec jeton authentifié + à faibles privilèges (idéal pour BOLA/BFLA) :
python3 -m apiharvester api.example.com \
--auth "Bearer high_priv_token_here" \
--auth2 "Bearer low_priv_token_here" \
--html report.html \
--json findings.jsonl
Reconnaissance rapide uniquement (découvrir les endpoints, sans attaques) :
python3 -m apiharvester example.com --skip-recon --attacks ""
(Ou simplement ne pas fournir --auth pour ignorer certaines phases d'attaque.)
Réexécuter uniquement les attaques contre les données de reconnaissance sauvegardées (itération rapide) :
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Exécuter uniquement des attaques spécifiques (par exemple, BOLA + Secrets) :
python3 -m apiharvester example.com --attacks bola,secrets