
Un puissant outil de brute-force de répertoires conçu pour les opérations récursives/multiplexées, la découverte et l'énumération d'API, le scraping de fichiers JS, et l'énumération des méthodes HTTP API, en une seule commande. Il n'est pas limité aux API, mon outil excelle simplement dans ce domaine.
Un outil puissant de brute-force de répertoires conçu pour la reconnaissance d'API et les tests d'intrusion. Découvre automatiquement les points d'extrémité d'API cachés, effectue un sous-scan récursif et sonde les méthodes HTTP pour une énumération plus approfondie des API.
✨ Fonctionnalités principales :
requeststmux (optionnel, pour le drapeau --split)xfce-terminal (pour les environnements de bureau Linux)# Clonez le dépôt
git clone https://github.com/austinjump-sec/API-SPY.git
cd API-SPY
# Installez les dépendances
pip install requests
# Rendez les scripts exécutables (optionnel)
chmod +x apispy.py apiprobe.py
python3 apispy.py <baseUrl> <wordlist> [OPTIONS]
| Argument | Description |
|---|---|
<baseUrl> | URL cible (ex : http://example.com ou http://api.example.com) |
<wordlist> | Chemin vers le fichier wordlist contenant les points d'extrémité (un par ligne) |
python3 apispy.py http://api.example.com wordlist.txt
python3 apispy.py http://api.example.com wordlist.txt -t10
python3 apispy.py http://api.example.com wordlist.txt -t5 --split
python3 apispy.py http://api.example.com/v1 wordlist.txt -t20
L'outil commence par tester un ensemble prédéfini de chemins d'API courants :
api, v1, v2, api/v1, api/v2, graphql, rest#)200, 401, 403Lorsqu'un point d'extrémité est trouvé, vous êtes invité :
'-> Subscan <url>? (y/n) [Auto-skip in 5s]:
y/yes pour scanner récursivement ce point d'extrémité avec la même wordlistAprès le sous-scan, vous êtes invité :
'-> Probe methods on <url>? (y/n) [Auto-skip in 5s]:
apiprobe.py qui teste les méthodes HTTP sur le point d'extrémité découvertAllow[+] Url found: http://api.example.com/v1 ← 200 OK (accessible)
'-> Subscan http://api.example.com/v1? (y/n) [Auto-skip in 0s]:
[-] Timeout: Skipped prompt for http://api.example.com/v1?
'-> Probe methods on http://api.example.com/v1? (y/n) [Auto-skip in 4s]:
[-] Url found but not permitted (403 ERR): ... ← Forbidden but exists
[-] Url found but not permitted (401 ERR): ... ← Requires authentication
[+] GET -> STATUS: 200 OK (Size: 1024)
[-] POST -> STATUS: 405 (Size: 0)
[Header Hint] Allow: GET, HEAD, OPTIONS
Créez un fichier texte simple avec les points d'extrémité (un par ligne) :
admin
users
api/users
v1/products
v2/customers
/api/v1/auth
/graphql
search
data
config
Remarque : Les lignes commençant par # sont considérées comme des commentaires et ignorées.
Wordlists d'API populaires à utiliser avec API-SPY :
# Mode furtif (peu de threads)
python3 apispy.py http://target.com wordlist.txt -t3
# Mode équilibré
python3 apispy.py http://target.com wordlist.txt -t15
# Mode agressif
python3 apispy.py http://target.com wordlist.txt -t50
timeout=5 dans le code source pour personnaliserAssurez-vous que le chemin du wordlist est correct et que le fichier existe :
ls -la /path/to/wordlist.txt
Lors du sous-scan, assurez-vous :
apispy.pyapiprobe.pySi --split échoue :
sudo apt install tmuxtmux new-session -s scancurl http://your-url/check_status()⚠️ Légal et éthique :
Modifiez le code source pour ajuster les valeurs de délai d'attente :
def ask_subscan(url, wordlist, timeout=10): # Passer de 5 à 10 secondes
Créez des wordlists ciblant des chemins d'API spécifiques :
# Points d'extrémité admin uniquement
grep -i "admin" full-wordlist.txt > admin-wordlist.txt
# API v1 uniquement
grep "v1" full-wordlist.txt > v1-wordlist.txt
Scannez plusieurs cibles avec une boucle :
for target in http://target1.com http://target2.com http://target3.com; do
python3 apispy.py "$target" wordlist.txt -t10
done
Les contributions sont les bienvenues ! N'hésitez pas à :
Cet outil est fourni uniquement à des fins éducatives et de tests de sécurité autorisés. Les utilisateurs sont responsables de s'assurer qu'ils disposent des autorisations appropriées avant de scanner un système. L'accès non autorisé aux systèmes informatiques est illégal.
Ce projet est fourni en l'état pour la recherche en sécurité et les tests autorisés.
Créé par : austinjump-sec
Dépôt : austinjump-sec/API-SPY
| Argument | Description |
|---|
--t<number> | Nombre de threads (max 150, défaut : 1) |
--split | Utiliser tmux split-window au lieu de nouvelles fenêtres de terminal |
--debug | Affiche les messages d'erreur autrement cachés |
--loud | Affiche tous les messages, positifs et erreurs, en mettant en évidence ceux qui ne renvoient pas 404 |
--js | Recherche les fichiers JavaScript et récupère les points d'extrémité d'API codés en dur courants |