
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:
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
Wenn Sie APIDetector v2 verwenden, ersetzen Sie die Befehle durch apidetectorv2.py.
-d, --domain: Einzelne zu testende Domain.-i, --input: Eingabedatei mit zu testenden Subdomains.-o, --output: Ausgabedatei zum Schreiben gültiger URLs.-t, --threads: Anzahl der für den Scan zu verwendenden Threads (Standard ist 10).-m, --mixed-mode: Testet sowohl HTTP- als auch HTTPS-Protokolle.-q, --quiet: Deaktiviert die ausführliche Ausgabe (Standardmodus ist ausführlich).-ua, --user-agent: Benutzerdefinierte User-Agent-Zeichenfolge für Anfragen.Die Offenlegung von Swagger- oder OpenAPI-Dokumentationsendpunkten kann verschiedene Risiken mit sich bringen, hauptsächlich im Zusammenhang mit Informationspreisgabe. Hier ist eine geordnete Liste basierend auf potenziellen Risikostufen, wobei ähnliche Endpunkte gruppiert werden, die APIDetector scannt:
'/swagger-ui.html', '/swagger-ui/', '/swagger-ui/index.html', '/api/swagger-ui.html', '/documentation/swagger-ui.html', '/swagger/index.html', '/api/docs', '/docs', '/api/swagger-ui', '/documentation/swagger-ui''/openapi.json', '/swagger.json', '/api/swagger.json', '/swagger.yaml', '/swagger.yml', '/api/swagger.yaml', '/api/swagger.yml', '/api.json', '/api.yaml', '/api.yml', '/documentation/swagger.json', '/documentation/swagger.yaml', '/documentation/swagger.yml''/v2/api-docs', '/v3/api-docs', '/api/v2/swagger.json', '/api/v3/swagger.json', '/api/v1/documentation', '/api/v2/documentation', '/api/v3/documentation', '/api/v1/api-docs', '/api/v2/api-docs', '/api/v3/api-docs', '/swagger/v2/api-docs', '/swagger/v3/api-docs', '/swagger-ui.html/v2/api-docs', '/swagger-ui.html/v3/api-docs', , '/swagger-resources', '/swagger-resources/configuration/ui', '/swagger-resources/configuration/security', '/api/swagger-resources', '/api.html'Beiträge zu APIDetector sind willkommen! Sie können das Repository forken, Änderungen vornehmen und Pull-Requests einreichen. Besonderer Dank gilt den mitwirkenden Mitgliedern, die bei Tests und Funktionsvorschlägen geholfen haben:
Das APIDetector-Tool ist ausschließlich für Test- und Bildungszwecke bestimmt. Die Entwickler von APIDetector übernehmen keine Haftung und lehnen jegliche Verantwortung für Missbrauch, unbeabsichtigte Folgen oder Schäden ab, die durch die Verwendung dieses Tools entstehen. Jegliche unbefugte, illegale oder anderweitig schädliche Verwendung von APIDetector ist ausdrücklich untersagt. Der Endbenutzer trägt die alleinige Verantwortung für die Einhaltung aller relevanten lokalen, staatlichen, bundesstaatlichen und internationalen Gesetze. Durch die Verwendung dieses Tools bestätigt der Benutzer, dass er über die erforderlichen Genehmigungen zum Testen der Netzwerke oder Systeme verfügt, die er scannen möchte, und erklärt sich bereit, die Entwickler von allen Ansprüchen freizustellen, die sich aus der Nutzung ergeben. Der Endbenutzer ist allein dafür verantwortlich, sicherzustellen, dass seine Nutzung dieses Tools keine rechtlichen Beschränkungen oder Nutzungsbedingungen der getesteten Netzwerke oder Systeme verletzt.
Haftungsausschluss: Nutzung des APIDetector-Tools Das APIDetector-Tool ist ausschließlich für rechtmäßige Test- und Bildungszwecke konzipiert. Es wird "wie besehen" ohne jegliche Gewährleistung, ausdrücklich oder stillschweigend, bereitgestellt. Die Entwickler und Vertreiber von APIDetector lehnen ausdrücklich jede Haftung für Missbrauch, unbeabsichtigte Folgen oder Schäden ab, die aus der Nutzung dieses Tools resultieren. Wichtiger rechtlicher Hinweis: Unbefugte, illegale oder unethische Nutzung von APIDetector ist strengstens untersagt. Benutzer sind allein dafür verantwortlich, alle geltenden lokalen, staatlichen, bundesstaatlichen und internationalen Gesetze sowie etwaige Nutzungsbedingungen der Netzwerke oder Systeme, mit denen sie interagieren, einzuhalten. Durch die Verwendung von APIDetector bestätigen die Benutzer, dass sie über die erforderlichen Genehmigungen zum Testen der Zielnetzwerke oder -systeme verfügen. Risikoübernahme und Freistellung: Durch das Herunterladen, Installieren oder Verwenden von APIDetector übernimmt der Benutzer die volle Verantwortung für etwaige rechtliche Konsequenzen im Zusammenhang mit seiner Nutzung. Die Entwickler und Vertreiber von APIDetector haften nicht für rechtliche Konsequenzen, Schäden oder Ansprüche Dritter, die sich aus seiner Nutzung ergeben. Die Benutzer erklären sich damit einverstanden, die Entwickler und Vertreiber von allen Ansprüchen, Anwaltskosten oder Verbindlichkeiten im Zusammenhang mit ihren Handlungen freizustellen und schadlos zu halten.
Dieses Projekt ist unter der MIT-Lizenz lizenziert.
| Option | Beschreibung | Standard |
|---|
-p, --port | Portnummer | 5000 |
--host | Host-Adresse | 127.0.0.1 |
-d, --debug | Debug-Modus aktivieren | False |
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"
'/api/swagger/v2/api-docs''/api/swagger/v3/api-docs'