
Das One-Shot-API-Angreifer-Tool – findet die API-URL aus dem angegebenen Root und simuliert die automatisierten Angriffe
Ein vollständiger Black-Box-API-Sicherheitsscanner, geschrieben in Python. Er zählt Endpunkte auf, identifiziert Parameter, prüft HTTP-Methoden, testet Authentifizierungs-/Autorisierungslogik und führt Standard-OWASP-API-Top-10-Angriffssimulationen aus (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration usw.), plus einen RESTler-artigen Zuverlässigkeits-Fuzzer, der unabhängig von jeder OWASP-Kategorie nach Abstürzen/500ern sucht.
Alle Kernskripte sind darauf ausgelegt, stdlib-only (nur Standardbibliothek) zu sein. Wenn externe Tools oder Bibliotheken nicht auf dem System vorhanden sind, fällt apiharvester automatisch auf reine Python-Implementierungen zurück, um eine sofortige Ausführung out-of-the-box zu gewährleisten.
apiharvester/ — Das Hauptverzeichnis des Python-Pakets. Ausführen mit python3 -m apiharvester.scripts/check_requirements.sh — Überprüft Binär- und Payload-Voraussetzungen.scripts/install_requirements.sh — Lädt erforderliche SecLists-Payload-Dateien herunter und installiert optional Binärdateien (über go install und pip).apiharvester.py — Eine eigenständige Single-File-Distribution des Scanners.api_deep_discovery.py — Dynamischer Crawler, der Katana-Headless-Browser-Code für die dynamische SPA/XHR-Endpunkt-Erkennung verwendet.api_intelligence_engine.py — Pipeline-Aggregator und passiver Schwachstellen-Klassifizierer.apisec.py — Alternative Single-File-Version des Sicherheitsscanners.requirements.txt — Liste der Python-Abhängigkeiten (hauptsächlich für optionale Python-basierte Beschleuniger).payloads/ — Wordlist- und Payload-Dateien für die Aufklärung:
params.txt — 25.889 Parameter-Namenskandidaten für API-Endpunkt-Testsdirectories.txt — 62.281 gängige API-Pfadmuster und Verzeichnisnamensubdomains.txt — 5.000 Subdomain-Varianten für die API-Erkennungkiterunner/ — Kiterunner-Routen-Schema-Dateien für beschleunigte Endpunkt-AufzählungVoraussetzungen überprüfen: Führen Sie das schreibgeschützte Skript aus, um zu prüfen, ob Kern-Tools/Payloads verfügbar sind:
./scripts/check_requirements.sh
Optionale Tools & Payload-Dateien installieren: Führen Sie das Installationsskript aus, um automatisch SecLists-Top-Wordlists, Kiterunner-Routen-Schemas abzurufen und Tool-Beschleuniger zu installieren:
./scripts/install_requirements.sh
Python-Pakete installieren:
pip3 install -r requirements.txt
Führen Sie den Scanner direkt gegen eine Zieldomain aus:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (positional): FQDN-Domain zum Scannen.--auth: Zugriffstoken mit hohen Privilegien für authentifizierte Prüfungen (z. B. gültige Benutzersitzung).--auth2: Zugriffstoken mit niedrigen Privilegien für BOLA-/BFLA-/Cross-Account-Privilege-Escalation-Tests.--threads: Threadpool-Größe (Standard: 20).--timeout: HTTP-Request-Timeout in Sekunden (Standard: 10).--burst: Anzahl schneller Anfragen zur Rate-Limiting-Verifizierung (Standard: 20).--json: Bericht im JSONL-Format speichern (zeilengetrennte JSON-Findings).--html: Interaktiven HTML-Dashboard-Bericht speichern.--output-dir: Standard-Ausgabeverzeichnispfad überschreiben (z. B. ./scans/example.com).--skip-recon: Recon-Phasen überspringen, vorhandene Ausgabedateien aus einem vorherigen Lauf verwenden.--recon-dir: Vorhandenes Recon-Ausgabeverzeichnis laden und nur Angriffsphasen ausführen.--attacks-only: Nur Angriffsphasen ausführen (impliziert --skip-recon).--attacks: Kommagetrennte Liste der auszuführenden Angriffe. Standard: alle. Verfügbar:
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. Testet Objekt-ID-Endpunkte mit ID-Fuzzing (0, 1, 2, 99, "admin", "test", UUID-Varianten usw.) und differenziellen Auth-Tokens.broken_auth) — Erkennung nicht authentifizierter Endpunkte, JWT-Schwachstellen-Cracking, alg=none-Bypass, Claim-Manipulation, kid-Injection, plus OPTIONS/HEAD-Methoden-Bypasses.mass_assignment) — Privilege-Escalation-Feldinjektion in PUT/PATCH-Bodies (role, is_admin, verified, balance usw.).rate_limit) — Sendet 20+ schnelle Anfragen; markiert Endpunkte, die 200 statt 429 Retry-After zurückgeben.bfla) — Broken Function-Level Authorization. Testet sensible Pfade (/admin, /roles, /impersonate usw.) mit und ohne Low-Priv-Token.business_logic) — Workflow-/State-Machine-Verletzungen (z. B. Aktualisierung einer Bestellung nach der Zahlung).ssrf) — Testet auf Server-Side Request Forgery über URL-Parameter und Request-Bodies.misconfiguration) — CORS (aktiv: sendet nicht vertrauenswürdigen Origin), fehlende Security-Header, ausführliche Fehler, Server-Banner-Leaks.inventory) — Undokumentierte Endpunkte, aufgegebene Endpunkte, exponierte Admin-Schnittstellen.sspp) — Unsafe Server-Side Post Processing (Template-Injection, XPath-Injection usw.).Bonus-Angriffe:
injection) — SQL-Injection, XSS, Command-Injection (error-based + time-based blind).reliability) — RESTler-artiges Fuzzing: Boundary-/Malformed-Input-Tests, um 5xx-Abstürze und Server-Zuverlässigkeitsfehler zu finden (unabhängig von OWASP-Kategorien).secrets) — Musterabgleich auf geleakte Anmeldedaten in Response-Bodies: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs und generische Secret-Zuweisungen (api_key=..., password=... usw.).Vollständiger Scan mit authentifiziertem + Low-Priv-Token (am besten für 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
Schnelles Recon-only (Endpunkte entdecken, keine Angriffe):
python3 -m apiharvester example.com --skip-recon --attacks ""
(Oder geben Sie einfach kein --auth an, um einige Angriffsphasen zu überspringen.)
Nur Angriffe gegen gespeicherte Recon-Daten erneut ausführen (schnelle Iteration):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Nur bestimmte Angriffe ausführen (z. B. BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets
TLS-Zertifikatsfehler umgehen (Corporate Proxy, Staging-Umgebung):
# apiharvester uses a permissive TLS context by default — no extra flags needed
# All HTTPS endpoints work even with self-signed/intercepted certs
python3 -m apiharvester https://staging-api.example.com
Jeder Scan schreibt seine Recon-Artefakte in ein strukturiertes Ausgabeverzeichnis, bevor die Angriffsphase ausgeführt wird. Standardmäßig ist dies:
output/{target}_{YYYYMMDD_HHMMSS}/