
Mehrfädiger Scanner zur Erkennung exponierter Swagger/OpenAPI-Endpunkte über Webdomänen und Subdomänen hinweg, mit automatischer XSS-Erkennung, PoC-Generierung und False-Positive-Filterung für API-Sicherheitsbewertungen.
Vorgestellt auf der BlackHat Arsenal 2024 (Link)
/swagger-ui/index.html-EndpunkteAPIDetector v3 benötigt Python 3.x und die folgenden Pakete:
flask # Web-Framework
requests # HTTP-Client
playwright # Browser-Automatisierung für Screenshots
nest_asyncio # Async-IO-Unterstützung
Alle Abhängigkeiten sind in requirements.txt aufgelistet und können während der Einrichtung automatisch installiert werden.
Nach der Installation der erforderlichen Pakete müssen Sie die Playwright-Browser installieren:
python -m playwright install
Dies ist erforderlich, damit die Screenshot-Funktionalität ordnungsgemäß funktioniert.
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
# Auf macOS/Linux:
python3 -m venv venv
source venv/bin/activate
# Auf Windows:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
playwright install
python app.py
python app.py --port 8080 --host 0.0.0.0
Öffnen Sie Ihren Browser und navigieren Sie zur im Terminal angezeigten URL.
Verwendung der Web-Oberfläche:
Die Screenshots werden im Verzeichnis screenshots zur späteren Referenz gespeichert.
APIDetector v3 bietet zwei Möglichkeiten zur Interaktion: eine moderne Web-Oberfläche (neu in v3) und eine traditionelle Kommandozeilen-Oberfläche (Original).
python app.py [Optionen]
Verfügbare Optionen:
| Option | Beschreibung | Standard |
|---|---|---|
-p, --port | Portnummer | 5000 |
--host | Host-Adresse | 127.0.0.1 |
-d, --debug | Debug-Modus aktivieren | False |
Beispiele:
# Mit Standardeinstellungen ausführen (localhost:5000)
python app.py
# Mit benutzerdefiniertem Port ausführen
python app.py -p 8080
# Externen Zugriff erlauben
python app.py --host 0.0.0.0
# Im Debug-Modus ausführen
python app.py -d
Zugriff auf die Web-Oberfläche:
Ergebnisse anzeigen:
Führen Sie APIDetector über die Kommandozeile aus. Hier sind einige Anwendungsbeispiele:
Häufige Verwendung: Scannen Sie eine Liste von Subdomains mit 30 Threads unter Verwendung eines Chrome-User-Agents und speichern Sie die Ergebnisse in einer Datei:
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"
So scannen Sie eine einzelne Domain:
python apidetector.py -d example.com
So scannen Sie mehrere Domains aus einer Datei:
python apidetector.py -i input_file.txt
So geben Sie eine Ausgabedatei an:
python apidetector.py -i input_file.txt -o output_file.txt
So verwenden Sie eine bestimmte Anzahl von Threads:
python apidetector.py -i input_file.txt -t 20
So scannen Sie mit beiden HTTP- und HTTPS-Protokollen:
python apidetector.py -m -d example.com
So führen Sie das Skript im Quiet-Modus aus (unterdrückt ausführliche Ausgabe):
python apidetector.py -q -d example.com
So führen Sie das Skript mit einem benutzerdefinierten User-Agent aus:
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"
Wenn Sie APIDetector v2 verwenden, ersetzen Sie die Befehle durch apidetectorv2.py.