APIDetector est un outil puissant et efficace conçu pour tester les points d'accès Swagger exposés dans divers sous-domaines, avec des capacités intelligentes uniques pour détecter les faux positifs. Il est particulièrement utile pour les professionnels de la sécurité et les développeurs impliqués dans les tests d'API et la recherche de vulnérabilités.
Présenté au BlackHat Arsenal 2024 (Lien)
Historique des versions
Nouveautés de la version 3 (actuelle)
- Interface Web moderne : interface conviviale pour un scan facile des points d'accès API
- Résultats en temps réel : mises à jour en direct des points d'accès et vulnérabilités découverts
- Tableau de bord interactif : interface propre et réactive utilisant Tailwind CSS et Alpine.js
- Support du téléchargement de fichiers : scanner plusieurs domaines/sous-domaines à la fois en téléchargeant un fichier texte
- Validation des domaines : validation des entrées par correspondance de motifs regex
- Configuration flexible : formulaire facile à utiliser pour les paramètres de scan avec des valeurs par défaut améliorées
- Résultats visuels : présentation améliorée des résultats de scan et des PoC
- Gestion des captures d'écran : capture et affichage automatiques des captures d'écran des points d'accès vulnérables (une par sous-domaine)
- Génération ciblée de PoC : génération de preuve de concept uniquement pour les points d'accès
/swagger-ui/index.html
- Design responsive : optimisé pour toutes les tailles d'écran, du mobile au desktop
- Gestion des erreurs : rétroaction et journalisation améliorées des erreurs
- Améliorations de l'accessibilité : meilleure navigation au clavier et support des lecteurs d'écran
Fonctionnalités de la version 2
- Détection automatique XSS : identifie les versions Swagger vulnérables
- Génération visuelle de PoC : crée des preuves de concept pour les vulnérabilités
- Gestion améliorée des erreurs : meilleure rétroaction et journalisation
- Performance améliorée : algorithmes de scan optimisés
Fonctionnalités de base
- Entrée flexible : accepte des domaines uniques ou des listes de sous-domaines
- Protocoles multiples : teste les points d'accès sur HTTP et HTTPS
- Concurrence : scan multi-threadé pour des résultats plus rapides
- Détection intelligente : capacités avancées de détection de faux positifs
- Paramètres personnalisables : configurer les threads, le user-agent, etc.
Prérequis
APIDetector v3 nécessite Python 3.x et les paquets suivants :
flask # Framework web
requests # Client HTTP
playwright # Automatisation du navigateur pour les captures d'écran
nest_asyncio # Support async IO
Toutes les dépendances sont listées dans requirements.txt et peuvent être installées automatiquement lors de la configuration.
Configuration initiale
Après avoir installé les paquets requis, vous devez installer les navigateurs Playwright :
python -m playwright install
Ceci est nécessaire pour le bon fonctionnement de la fonctionnalité de capture d'écran.
Premiers pas
Prérequis
- Python 3.x (Télécharger)
- pip (installateur de paquets Python)
- Git (pour cloner le dépôt)
Installation
- Clonez le dépôt :
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
- Créez et activez un environnement virtuel :
# Sur macOS/Linux :
python3 -m venv venv
source venv/bin/activate
# Sur Windows :
python -m venv venv
venv\Scripts\activate
- Installez les dépendances :
pip install -r requirements.txt
- Installez l'automatisation du navigateur :
playwright install
Interface Web (Version 3)
- Démarrez le serveur web :
python app.py
- Par défaut, le serveur tourne sur http://127.0.0.1:5000. Vous pouvez spécifier un port ou un hôte différent :
python app.py --port 8080 --host 0.0.0.0
-
Ouvrez votre navigateur et accédez à l'URL affichée dans le terminal.
-
Utilisation de l'interface web :
- Saisissez un seul domaine ou téléchargez un fichier contenant plusieurs domaines (un par ligne)
- Configurez les options de scan (nombre de threads, mode mixte, user-agent)
- Cliquez sur 'Démarrer le scan' pour commencer
- Visualisez les résultats en temps réel au fur et à mesure
- Les captures d'écran des points d'accès vulnérables s'affichent automatiquement
-
Les captures d'écran sont enregistrées dans le répertoire screenshots pour référence ultérieure.
Utilisation
APIDetector v3 offre deux façons d'interagir avec l'outil : une interface web moderne (nouveauté de la v3) et une interface en ligne de commande traditionnelle (originale).
Interface Web
- Démarrez le serveur web :
python app.py [options]
Options disponibles :
| Option | Description | Défaut |
|---|
-p, --port | Numéro de port | 5000 |
--host | Adresse de l'hôte | 127.0.0.1 |
-d, --debug | Activer le mode débogage | False |
Exemples :
# Exécution avec les paramètres par défaut (localhost:5000)
python app.py
# Exécution sur un port personnalisé
python app.py -p 8080
# Autoriser l'accès externe
python app.py --host 0.0.0.0
# Exécution en mode débogage
python app.py -d
-
Accédez à l'interface web :
- Ouvrez votre navigateur et accédez à l'URL affichée
- Saisissez le domaine cible OU téléchargez un fichier contenant plusieurs domaines (un par ligne)
- Configurez les options de scan :
- Mode HTTP/HTTPS
- Nombre de threads (défaut : 10)
- User-Agent personnalisé
- Cliquez sur "Démarrer le scan"
-
Visualisez les résultats :
- Les points d'accès API découverts sont affichés en temps réel avec suivi de la progression
- Les points d'accès vulnérables sont automatiquement testés
- Des captures d'écran de PoC sont générées pour les vulnérabilités confirmées
- Les résultats peuvent être consultés pendant que le scan est encore en cours
Interface en Ligne de Commande
Exécutez APIDetector en ligne de commande. Voici quelques exemples d'utilisation :
-
Usage courant : scanner une liste de sous-domaines avec 30 threads en utilisant un user-agent Chrome et enregistrer les résultats dans un fichier :
python apidetector.py -i list_of_company_subdomains.txt -o results_file.txt -t 30 -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
-
Pour scanner un seul domaine :
python apidetector.py -d example.com
-
Pour scanner plusieurs domaines à partir d'un fichier :
python apidetector.py -i input_file.txt
-
Pour spécifier un fichier de sortie :
python apidetector.py -i input_file.txt -o output_file.txt
-
Pour utiliser un nombre spécifique de threads :
python apidetector.py -i input_file.txt -t 20
-
Pour scanner avec les deux protocoles HTTP et HTTPS :
python apidetector.py -m -d example.com
-
Pour exécuter le script en mode silencieux (supprimer la sortie verbose) :
python apidetector.py -q -d example.com
-
Pour exécuter le script avec un user-agent personnalisé :
python apidetector.py -d example.com -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
Si vous utilisez APIDetector v2, remplacez les commandes par apidetectorv2.py.
Options