Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ApiHunter — Async-API-Sicherheitsscanner in Rust für CORS, CSP, GraphQL, JWT, OpenAPI und aktive API-Posture-Checks. | Kitploit
Tools/GitHubGitHub/teycir/apihunter
AufklärungSchwachstellenscannerDynamische Analyse (Sandboxing)Webanwendungs-ExploitationInformationsbeschaffungWebsicherheitPenetrationstestsDevSecOpsAPI-Sicherheit
GitHubteycir/apihunter

ApiHunter

Async-API-Sicherheitsscanner in Rust für CORS, CSP, GraphQL, JWT, OpenAPI und aktive API-Posture-Checks.

1927vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigenWebseite
Teilen

Entwicklung unterstützen

Wenn dieses Projekt Ihre Arbeit unterstützt, unterstützen Sie die laufende Wartung und neue Funktionen.

ETH Donation Wallet
0x11282eE5726B3370c8B480e321b3B2aA13686582

Ethereum donation QR code

Scannen Sie den QR-Code oder kopieren Sie die obige Wallet-Adresse.

🎯 ApiHunter

Typing SVG

Rust Security API Async CI License


📺 Video-Demo

ApiHunter Demo-Video
Klicken Sie, um die vollständige Demo auf YouTube anzusehen

🖥️ Desktop-App-Screenshots

ApiHunter Desktop – Übersichtsbereich mit Versionschip, Gesundheitscheck und Vollscan-Zieleingabe

ApiHunter Desktop – Vollscan-Steuerung: Quick Passive / Deep Active Voreinstellungen, einklappbare Sicherheits-, Laufzeitbegrenzungs- und Scanner-Umschaltabschnitte

ApiHunter Desktop – Analyse-Dashboard der Ergebnisse: Schweregrad-Wärmekarte, Karte des schlechtesten Ziels, Scan-Effizienz, Zusammenfassung, Aufschlüsselung der Funde und Top-Prüfungen

ApiHunter Desktop – Unteres Bedienfeld der Ergebnisse: Zielranking, Scanner-Abdeckung, Schweregradaufschlüsselung der Prüfungen, Zusammenfassung pro Ziel und Ein-Klick-Export-Schaltflächen


📑 Inhaltsverzeichnis

  • Video-Demo
  • Desktop-App-Screenshots
  • Warum ApiHunter?
  • Scanner-Module
  • Funktionen
  • Vergleich mit anderen Tools
  • Schnellstart
  • Architektur
  • Vorlagen-Tooling
  • Scan-Skripte
  • Teststrategie
  • Dokumentation
  • Fahrplan
  • Installation
  • CLI-Referenz
  • Exit-Codes
  • Sicherheits- und rechtliche Leitplanken
  • Verwandte Projekte
  • Über
  • FAQ
  • Lizenz

Asynchroner, modularer API-Sicherheitsscanner für API-Basistests und Regressionserkennung.
Kombiniert Erkennung mit gezielten Prüfungen (CORS/CSP/GraphQL/OpenAPI/JWT/API Security) unter Verwendung adaptiver Nebenläufigkeit und CI-ready Ausgaben (NDJSON/SARIF).

Anwendungsfälle: Angriff für Red-Team/API-Pentest-Erkennung und Exploit-Validierung sowie Verteidigung für CI/CD-Regressionsschleusen, kontinuierliche API-Härtung und frühzeitige Fehlkonfigurationserkennung.

Scannen im großen Stil? Siehe Triage-Modus – scannen Sie 5000 Ziele in 20 Minuten mit grundlegenden Sicherheitsprüfungen, verwenden Sie dann Anreicherungsmodus, um Threat-Intelligence-Kontext (Ports, CVEs, ASN, Domain-Alter) zu den Ergebnissen hinzuzufügen.

Namensgebung

  • Projekt/Repository: ApiHunter
  • Cargo-Paket: apihunter
  • Bibliotheks-Crate: api_scanner
  • CLI-Binärdatei: apihunter (Standard für cargo run)

GitHub-Metadaten (Empfohlen)

Setzen Sie diese in den GitHub-Repository-Einstellungen für die Auffindbarkeit:

  • Beschreibung: Asynchroner API-Sicherheitsscanner für CORS/CSP/GraphQL/JWT/OpenAPI und aktive API-Positionsprüfungen.
  • Website: https://github.com/Teycir/ApiHunter
  • Themen: rust, security, api-security, scanner, graphql, cors, csp, jwt, openapi, sarif, ndjson

Repository-Ablauf```mermaid

flowchart LR A[CLI apihunter] --> B[main.rs] D[Input Sources] --> E[Pre-filter + Discovery] B --> C[HttpClient + Config] E --> F[runner.rs] C --> F

root@kitploit:~
F --> G1[Passive scanners]
F --> G2[Active scanners]

I[template-tool] --> H[CVE templates]
H --> G2

G1 --> J[Findings]
G2 --> J
J --> K[Reporter]
K --> L[Auto Reports]
K --> M[CI/CD Controls]
root@kitploit:~
## Warum ApiHunter?

### Hauptvorteile

- **API-First-Architektur**: Speziell für REST/GraphQL-APIs entwickelt, nicht von Web-App-Scannern abgeleitet
- **Intelligente Reduzierung falscher Positiver**:
  - SPA-Catch-all-Erkennung mit Canary-Probing
  - Kontextbewusste Secret-Validierung (Frontend vs. Backend)
  - Body-Content-Validierung und Referer-Prüfung
  - Response-Fingerprinting zur Vermeidung doppelter Funde
- **Produktionssicher von Grund auf**:
  - Adaptive Nebenläufigkeit (AIMD), die bei Fehlern zurückfährt
  - Pro-Host-Ratenbegrenzung mit konfigurierbaren Verzögerungen
  - Höflichkeitskontrollen (Wiederholungen, Timeouts, WAF-Umgehung)
  - Dry-Run-Modus für aktive Prüfungen
- **Tarnung & Umgehung**:
  - User-Agent-Rotation zur Laufzeit aus einer kuratierten Sammlung (assets/user_agents.txt)
  - Zufällige Anforderungsverzögerungen mit Jitter
  - Pro-Host-Verzögerungsdurchsetzung (vermeidet Burst-Muster)
  - Wiederholungslogik mit exponentiellem Backoff
  - Benutzerdefinierte Header-Injektion zur Tarnung als legitimer Traffic
  - Adaptive Zeitsteuerung basierend auf Serverantworten
  - Keine festcodierten Scanner-Fingerabdrücke im Standardmodus

### Tarnungstechniken im Detail

ApiHunter verwendet mehrere Tarnungstechniken, um von WAF (Web Application Firewall) und Bot-Schutzsystemen nicht erkannt zu werden:

#### 1. User-Agent-Rotation
**Was es tut:** Zufälliger Wechsel durch 100+ echte Browser-User-Agent-Strings aus einer Datei (`assets/user_agents.txt`)

**Warum es funktioniert:** Bots verwenden typischerweise denselben User-Agent (z. B. `curl/7.68.0`). Durch Vortäuschung von Chrome, Firefox, Safari usw. tarnt man sich als legitimer Traffic.

**Einfacher Vergleich:** Wie das Tragen verschiedener Verkleidungen, anstatt immer dieselbe Uniform zu tragen.

#### 2. Zufällige Zeitsteuerung & Jitter
**Was es tut:** Fügt zufällige Verzögerungen zwischen Anfragen hinzu (gesteuert durch `--delay-ms`) mit Jitter (kleine zufällige Abweichungen)

**Warum es funktioniert:** Bots senden Anfragen in perfekten Intervallen (genau 100 ms auseinander). Menschen sind unberechenbar. Zufällige Zeitsteuerung lässt Traffic organisch wirken.

**Einfacher Vergleich:** Gehen mit unregelmäßigen Schritten anstatt Marschieren wie ein Roboter.

#### 3. Pro-Host-Verzögerungsdurchsetzung
**Was es tut:** Verfolgt die Verzögerung separat für jede Domain, nicht global.

**Warum es funktioniert:** Verhindert Burst-Muster, bei denen ein Host 50 Mal sofort angegriffen wird. Jeder Host sieht höfliche, zeitlich verteilte Anfragen.

**Einfacher Vergleich:** Abwechselnd in verschiedenen Gesprächen zu Wort kommen, anstatt immer wieder dieselbe Person anzubrüllen.

#### 4. Adaptive Nebenläufigkeit (AIMD)
**Was es tut:** Automatische Verlangsamung bei 429 (Ratenlimit) oder 503 (Server ausgelastet) Fehlern, Beschleunigung bei Erfolg.

**Warum es funktioniert:** Zurückfahren bei Erkennung, Nachahmung des Browser-Wiederholungsverhaltens. WAFs sehen „dieser Client respektiert unsere Grenzen“.

**Einfacher Vergleich:** Langsamer fahren bei Stau, schneller auf freier Strecke.

#### 5. Wiederholung mit exponentiellem Backoff
**Was es tut:** Wenn eine Anfrage fehlschlägt, wird 1s, dann 2s, dann 4s gewartet, bevor erneut versucht wird.

**Warum es funktioniert:** Legitime Clients wiederholen höflich. Bots senden oft sofort erneut oder geben auf.

**Einfacher Vergleich:** An eine Tür klopfen und jedes Mal länger warten, anstatt ununterbrochen zu hämmern.

#### 6. Keine Scanner-Fingerabdrücke
**Was es tut:** Sendet keine Header wie `X-Scanner: ApiHunter` oder vorhersagbare Muster.

**Warum es funktioniert:** Viele Tools hinterlassen Signaturen (Nuclei-Templates, sqlmap-Muster). ApiHunter vermeidet offensichtliche Marker.

**Einfacher Vergleich:** Kein Namensschild mit der Aufschrift „Sicherheitstester“ tragen.

#### 7. Verbindungswiederverwendung & Pooling
**Was es tut:** Verwendet Pro-Host-HTTP-Client-Pools, hält Verbindungen aktiv.

**Warum es funktioniert:** Browser nutzen Verbindungen wieder. Jede Anfrage eine neue Verbindung zu öffnen/schließen wirkt verdächtig.

**Einfacher Vergleich:** Die Tür offen lassen, anstatt sie zuzuschlagen und erneut zu klingeln.

#### 8. Benutzerdefinierte Header-Injektion
**Was es tut:** Kann Header wie `Referer`, `X-Forwarded-For`, benutzerdefinierte Cookies hinzufügen.

**Warum es funktioniert:** Lässt Anfragen aussehen, als kämen sie aus einem legitimen Anwendungsfluss (Link geklickt, Sitzungscookies vorhanden).

**Einfacher Vergleich:** Beim Eintritt in eine Veranstaltung eine Eintrittskarte vorzeigen, anstatt über den Zaun zu springen.

#### Erkennungsvergleich

| Technik | Ohne Umgehung | Mit Umgehung |
|---------|---------------|--------------|
| **User-Agent** | `python-requests/2.28.0` (offensichtlicher Bot) | `Mozilla/5.0 (Windows NT 10.0; Win64; x64)...` (sieht aus wie Chrome) |
| **Zeitsteuerung** | Perfekte 100-ms-Intervalle → WAF blockiert | 120 ms, 95 ms, 180 ms → sieht menschlich aus |
| **Wiederholungen** | Sofortiger erneuter Versuch → Sperre | Warte 1s→2s→4s → „geduldiger Client“ |
| **Nebenläufigkeit** | 100 parallele Treffer → Alarm | Adaptiv 5→10→3 basierend auf Antwort → „höflicher Browser“ |

#### Wann `--waf-evasion` verwenden

- Testen von Produktions-APIs mit Cloudflare/Akamai/AWS WAF
- Vermeidung von IP-Sperren bei großen Scans
- Penetrationstests, bei denen Sie unter dem Radar bleiben müssen

- **CI/CD-nativ**:
  - Baseline-Diffing (nur neue Befunde melden)
  - Streaming-NDJSON-Ausgabe für Echtzeit-Überwachung
  - SARIF 2.1.0 für GitHub/GitLab Code Scanning
  - Exit-Code-Bitmaske für Pipeline-Steuerung
  - Schweregrad-basierte Filterung und Fehlerschwellen
- **Leistung im großen Maßstab**:
  - Rust-async-Laufzeit (tokio) mit Zero-Cost-Abstraktionen
  - Gleichzeitiges Scannen mit Semaphor-begrenzter Parallelität
  - Pro-Host-HTTP-Client-Pools zur Vermeidung von Verbindungsengpässen
  - Effiziente Speichernutzung (keine GC-Pausen)
- **Umfassende Authentifizierungsunterstützung**:
  - JSON-basierte Authentifizierungsabläufe mit Cookie/Header-Extraktion
  - Dual-Identity-IDOR/BOLA-Tests
  - Sitzungsdatei-Import (Excalibur-Integration)
  - Bearer-, Basic- und benutzerdefinierte Header-Authentifizierung
  - Automatischer nicht authentifizierter Client für Privilege-Escalation-Prüfungen

## Scanner-Module

ApiHunter enthält 13 integrierte Scanner-Module. Siehe [docs/scanners.md](https://github.com/teycir/apihunter/blob/main/docs/scanners.md) für detaillierte Erkennungslogik.

| Scanner | Typ | Was wird erkannt |
|---------|-----|------------------|
| **CORS** | Passiv | Wildcard-Origins, reflektierte Origins mit Credentials, Null-Origin-Akzeptanz, Regex-ByPass-Schwachstellen (Suffix/Präfix-Angriffe), fehlender Vary: Origin, unsichere Preflight-Methoden |
| **CSP** | Passiv | Fehlende Content-Security-Policy, unsafe-inline/unsafe-eval-Direktiven, Wildcard-Quellen, umgehbare CDN-Hosts (JSONP-Gadgets), fehlende frame-ancestors |
| **GraphQL** | Passiv | Introspection aktiviert, sensible Schema-Felder (user/password/token-Typen), Feld-Vorschläge (Schema-Leak), Query-Batching, Alias-Amplification (DoS), GraphiQL/Playground-Exposition |
| **JWT** | Passiv | alg=none-Token, schwache HS256-Geheimnisse (Wortlisten-basiert), fehlende/übermäßige Ablaufzeit, sensible Claims in der Payload, Algorithm Confusion-Schwachstellen |
| **OpenAPI** | Passiv | Fehlende Security Schemes, Operationen ohne Auth-Anforderungen, Datei-Upload-Endpunkte, veraltete Operationen, ungesicherte sensible Endpunkte |
| **API-Versionierung** | Passiv | Versions-Header-Offenlegung, gleichzeitige Legacy-/neue API-Versionen, Deprecation-Header und Antwortdriften über harmlose Abfrage-/Versionsvarianten (plus Tiefenmodus über `--response-diff-deep`) |
| **gRPC/Protobuf** | Passiv + Aktiv | gRPC-Transport/Content-Type-Signale, Protobuf-Oberflächenhinweise sowie optionale Reflexion/Health-Probe-Signale |
| **API-Sicherheit** | Passiv + Aktiv | Fehlende Sicherheits-Header (X-Content-Type-Options, X-Frame-Options), Server-Versions-Offenlegung, nicht authentifizierter Zugriff auf sensible Pfade, HTTP-Methoden-Enumeration, Debug-Endpunkte, Secret-Exposure-Muster, aktive IDOR/BOLA-Prüfungen (Body + ausgewählter Header-Vergleich), blinde SSRF-Callback-Probes sowie Gateway/ByPass-Probe-Signale |
| **Mass Assignment** | Aktiv | Reflektierte sensible Felder (is_admin, role, permissions), persistierte Zustandsänderungen, Privilege Escalation durch Feldinjektion |
| **OAuth/OIDC** | Aktiv | Redirect-URI-Validierungs-ByPass, fehlender State-Parameter, PKCE-Unterstützungsprobleme (fehlendes S256, Plain erlaubt), impliziter Flow aktiviert, Password-Grant aktiviert |
| **Rate Limit** | Aktiv | Fehlendes Ratenlimit (Burst-Probes), fehlende Retry-After-Header, IP-Header-Spoofing-ByPass (X-Forwarded-For) |
| **WebSocket** | Aktiv | WebSocket-Upgrade-Akzeptanz auf häufigen Pfaden, fehlende Origin-Validierung, nicht authentifizierte WebSocket-Verbindungen |
| **CVE-Vorlagen** | Aktiv | Vorlagengetriebene CVE-Erkennung aus `assets/cve_templates/*.toml` (derzeit 168 Vorlagen), Baseline-vs-ByPass-differentieller Abgleich |

**Passiv-Scanner** laufen standardmäßig und analysieren Antworten ohne maßgeschneiderte Anfragen zu senden.  
**Aktiv-Scanner/Prüfungen** erfordern `--active-checks` und senden potenziell invasive Sonden (IDOR/BOLA, Mutation, ByPass-Tests).  
IDOR/BOLA lebt unter dem `API-Sicherheit`-Scanner (es gibt kein dediziertes `--no-idor`-Flag; verwenden Sie `--no-api-security`, um es zu deaktivieren).

### Modulausgabe & Signalhinweise

Diese Hinweise fassen zusammen, wie Befunde ausgegeben werden und was typischerweise Rauschen verursacht:

| Modul | Befund-Präfix / Form | Häufige falsch Positive | Häufige falsch Negative |
|-------|-----------------------|-------------------------|-------------------------|
| CORS | `cors/*` mit Origin/Evidence-Feldern | Reflexion auf nicht sensiblen Routen | Origin-Prüfungen nur auf authentifizierten Routen angewendet |
| CSP | `csp/*` mit Directive-Evidence | Legacy-CSP, absichtlich während Migration angewendet | CSP wird nur auf Produktions-CDN-Edge-Pfad ausgeliefert |
| GraphQL | `graphql/*` mit Endpunkt + Capability-Signal | Öffentliche Playgrounds, für interne/Test-Mandanten bestimmt | Schema-Kontrollen erst nach Auth aktiviert |
| JWT | `jwt/*` mit Token-Claim/Header-Evidence | Test-/Demo-Token in synthetischen Antworten | Token erscheint nie in gescannten Antworten |
| OpenAPI | `openapi/*` mit Operation/Security-Kontext | Spezifikation enthält absichtlich veraltete, aber blockierte Endpunkte | Spezifikation nicht verfügbar oder auf private Dokumente verteilt |
| API-Versionierung | `api_versioning/*` + `response_diff/*` | Mehrere unterstützte Versionen während kontrollierter Migrationen | Versionierte Pfade nicht aus aktueller Seed-Menge entdeckbar |
| gRPC/Protobuf | `grpc_protobuf/*` mit Transport/Reflexion-Evidence | gRPC-ähnliche Metadaten auf Edge-Proxys ohne offengelegte RPC-Oberfläche | gRPC-Endpunkte hinter separatem Host/Pfad von Seed-Menge nicht erreicht |
| API-Sicherheit | `api_security/*` mit Header/Pfad/Methoden-Evidence | Debug/Test-Endpunkte absichtlich in Nicht-Prod exponiert | Kontrollen hinter Auth/Session-Kontext erzwungen |
| Mass Assignment | `mass_assignment/*` mit reflektierten/persistierten Deltas | Echo-Verhalten, das nicht den Backend-Zustand persistiert | Mutationen durch versteckte Validierungsregeln abgelehnt |
| OAuth/OIDC | `oauth/*` mit Redirect/Metadaten-Evidence | Nicht-Produktions-IdP-Konfiguration mit gelockerten Richtlinien | Dynamische Richtliniendurchsetzung nicht in Metadaten sichtbar |
| Rate Limit | `rate_limit/*` mit Burst/429-Verhalten | Globales Traffic-Shaping überlagert App-Ebene-Limiter-Verhalten | Langzeit-Limiter nicht durch kurzes Sondenfenster ausgelöst |
| WebSocket | `websocket/*` mit Upgrade/Origin-Prüfungen | Öffentliche WS-Endpunkte absichtlich anonym | Auth über Handshake-Header erforderlich, nicht in Sonde bereitgestellt |
| CVE-Vorlagen | `cve/<id>/<check>` mit Template-Evidence | Fingerprint-Kollision auf generischen Endpunkten | Verwundbarer Pfad/Kontext nicht von Seed-URLs erreicht |

Für detaillierte Informationen und Anleitungen zur Behebung siehe [docs/scanners.md](https://github.com/teycir/apihunter/blob/main/docs/scanners.md) und [docs/findings.md](https://github.com/teycir/apihunter/blob/main/docs/findings.md).  
Die Scanner-Dokumentation enthält jetzt einen quellalinierten [Modulprüfkatalog](https://github.com/teycir/apihunter/blob/main/docs/scanners.md#module-check-catalog) und ein [Erwartungsmodell für falsch Positive](https://github.com/teycir/apihunter/blob/main/docs/scanners.md#false-positive-expectation-model).

## Funktionen

### Passive Sicherheitsanalyse
- **CORS-Fehlkonfigurationserkennung**:
  - Dynamische Origin-Generierung basierend auf der Ziel-Domain
  - Regex-ByPass-Tests (Suffix/Präfix-Angriffe)
  - Credential-bewusste Schweregradeinstufung
  - Wildcard- und Null-Origin-Erkennung
- **CSP-Richtlinienanalyse**:
  - Erkennung fehlender/schwacher Content Security Policy
  - Unsichere Inline/Eval-Direktiven
  - Wildcard-Quellenerkennung
  - Richtlinien-ByPass-Muster
- **GraphQL-Sicherheit**:
  - Introspection-Abfrageerkennung
  - Analyse sensibler Typen/Feldnamen
  - Query-Batching-Unterstützungserkennung
  - Alias-Amplification (DoS) Sondierung
  - Aktives Mutations-Fuzzing (`--active-checks`, unterstützt `--dry-run`)
  - GraphiQL/Playground-Exposition
- **JWT-Tokenanalyse**:
  - Algorithm Confusion (alg=none, HS256→RS256)
  - Schwache Secret-Erkennung (kuratierte Wortliste)
  - Erkennung langlebiger Token (fehlende/übermäßige exp)
  - Offenlegung sensibler Claims
  - Tokenextraktion aus Headern und Cookies
- **OpenAPI/Swagger-Analyse**:
  - Security-Scheme-Validierung
  - Datei-Upload-Endpunkt-Erkennung
  - Kennzeichnung veralteter Operationen
  - Fehlende Sicherheitsdefinitionen
  - Spec-Caching für Leistung
- **gRPC/Protobuf-Abdeckung**:
  - gRPC-Antwortmetadaten/Content-Type-Erkennung
  - Protobuf-Oberflächenhinweis-Erkennung aus Endpunkt-Metadaten/Pfadform
  - Optionale Reflexion/Health-Aktiv-Probe-Signale auf bekannten gRPC-Pfaden
- **Secret-Exposure-Erkennung**:
  - AWS-Schlüssel (AKIA*, Secret Keys)
  - Google-API-Schlüssel (AIza*)
  - GitHub-Token (ghp_*, github_pat_*)
  - Slack-Token (xox*)
  - Stripe-Schlüssel (sk_live_*, pk_live_*)
  - Datenbank-URLs, private Schlüssel, Bearer-Token
  - Kontextbewusste Validierung (reduziert falsch Positive)
- **API-Sicherheitsprüfungen**:
  - HTTP-Methoden-Enumeration
  - Debug-Endpunkt-Erkennung
  - Directory-Listing-Exposition
  - Sicherheit.txt-Vorhandensein
  - Antwort-Header-Analyse (HSTS, X-Frame-Options usw.)
  - Offenlegung von Fehlermeldungen

### Aktive Sicherheitstests (--active-checks)
- **API-Sicherheit-IDOR/BOLA-Prüfungen** (3-Stufen-Ansatz):
  - Test nicht authentifizierten Zugriffs
  - Antwortvergleich über Body-Fingerabdrücke plus stabile Header-Snapshots
  - ID-Enumeration (±2 Bereichsdurchlauf)
  - Benutzerübergreifende Autorisierungsbypässe (Dual-Identity)
  - Blinde SSRF-Callback-Sondierung über Callback-artige Query-Parameter (`APIHUNTER_OAST_BASE`, unterstützt `--dry-run`)
  - Gateway-Fingerprint- und ByPass-Sondierung (`api_security/gateway-*`)
- **Mass Assignment-Schwachstellen**:
  - Reflektierte Injektion sensibler Felder
  - Erkennung persistierter Zustandsänderungen
  - Baseline→Mutate→Confirm-Verifikation
  - Privilege Escalation durch Feldinjektion
- **OAuth/OIDC-Sicherheit**:
  - Redirect-URI-Validierungs-ByPass
  - State-Parameter-Handling
  - PKCE-Unterstützungserkennung
  - Härtung der Metadatenkonfiguration
  - Erkennung von Implizitem Flow und Password Grant
- **Ratenbegrenzung**:
  - Burst-Anforderungssondierung
  - Erkennung fehlender Ratenbegrenzung
  - Retry-After-Header-Validierung
  - IP-Header-Spoofing-ByPass-Tests
- **WebSocket-Sicherheit**:
  - Upgrade-Akzeptanz auf häufigen Pfaden
  - Origin-Validierungstests
  - Fehlende Authentifizierungsprüfungen
- **CVE-Vorlagen-Engine**:
  - TOML-basierter Vorlagenkatalog
  - Nuclei YAML-Importunterstützung
  - Baseline-vs-ByPass-differentieller Abgleich
  - Host+Template-Deduplizierung
  - Lader-Qualitätsgates überspringen ungültige/unsichere Anforderungsvorlagen (z. B. nicht aufgelöste Anforderungs-Platzhalter)
  - Segmentbewusster Kontextabgleich reduziert breites Pfad-Substring-Überauslösen
  - Aktueller lokaler Katalog: 168 Vorlagen (enthält kuratierte gehärtete Prüfungen wie CVE-2022-22947, CVE-2021-29442, CVE-2021-29441, CVE-2020-13945, CVE-2021-45232, CVE-2022-24288)

### Entdeckung & Enumeration
- **Endpunkt-Entdeckung**:
  - robots.txt-Parsing
  - sitemap.xml-Parsing
  - OpenAPI/Swagger-Spec-Import
  - HAR-Datei-Import (Excalibur-Integration)
  - Postman/Insomnia-Sammlungsimport (`--collection`)
  - JavaScript-Endpunkt-Extraktion
  - Gleich-Host-Filterung
- **URL-Zugänglichkeits-Vorfilterung**:
  - Schnelle Vorkontrolle zur Überspringung toter Endpunkte
  - Konfigurierbares Timeout
  - Optionale Umgehung mit --no-filter

### Leistung & Zuverlässigkeit
- **Adaptive Nebenläufigkeit (AIMD)**:
  - Automatische Ratenanpassung basierend auf Fehlern
  - Additive Erhöhung (alle 5s)
  - Multiplikatives Verringern bei 429/503/Timeouts
- **Tarnung & WAF-Umgehung**:
  - User-Agent-Rotation aus Laufzeit-Pool (assets/user_agents.txt mit 100+ echten UAs)
  - Eingebettete Fallback-UAs, falls Datei nicht verfügbar
  - Zufällige Verzögerungs-Jitter zur Vermeidung von Erkennungsmustern
  - Pro-Host-Zeitsteuerungsdurchsetzung (nicht global)
  - Wiederholungslogik mit exponentiellem Backoff
  - Benutzerdefinierte Header-Injektion (X-Forwarded-For, Referer usw.)
  - Adaptive Zeitsteuerung basierend auf 429/503-Antworten
  - Höflichkeitsmodus für kooperatives Testen
  - Keine Scanner-Fingerabdrücke in User-Agent oder Headern standardmäßig
- **Ressourcenmanagement**:
  - Semaphor-begrenzte Parallelität
  - Pro-Host-HTTP-Client-Pools
  - Verbindungswiederverwendung und Pooling
  - Konfigurierbare Timeouts und Wiederholungen
- **Fehlerbehandlung**:
  - Panik-Wiederherstellung über JoinSet
  - Erfasste Fehler separat gemeldet
  - Graceful Degradation bei Scanner-Fehlern

### Ausgabe & Berichterstattung
- **Mehrere Ausgabeformate**:
  - Pretty JSON (lesbar)
  - NDJSON (Streaming, analysierbar)
  - SARIF 2.1.0 (GitHub/GitLab Code Scanning)
- **Baseline-Diffing**:
  - Baseline-Snapshots generieren
  - Scans vergleichen, um nur neue Befunde zu melden
  - Perfekt für Regressionstests
- **Auto-Save Reports** (standardmäßig aktiviert, mit `--no-auto-report` deaktivierbar):
  - Gespeichert in ~/Documents/ApiHunterReports/<timestamp>/
  - findings.json (strukturierte Befunde)
  - summary.md (Markdown-Bericht)
  - scan.log (Ausführungsprotokoll)
- **Echtzeit-Streaming**:
  - Befunde streamen, sobald sie entdeckt werden
  - NDJSON-Format zur Live-Analyse
  - Fortschrittsverfolgung
- **Schweregrad-Filterung**:
  - Nach minimalem Schweregrad filtern (info/low/medium/high/critical)
  - Fail-on-Schwelle für CI/CD
  - Exit-Code-Bitmaske (0x01 Befunde, 0x02 Fehler)

### Integration & Erweiterbarkeit
- **Steckbare Scanner-Architektur**:
  - Scanner-Trait implementieren, um Module hinzuzufügen
  - Async-first-Design
  - Unabhängige Scanner-Ausführung
  - Panik-Isolation pro Scanner
- **TOML-basierte Erweiterbarkeit**:
  - CVE-Vorlagenkatalog in assets/cve_templates/*.toml
  - Keine Codeänderungen erforderlich, um neue Prüfungen hinzuzufügen
  - Vorlagengetriebene Schwachstellenerkennung
  - Von der Community teilbares Vorlagenformat
- **Nuclei-Vorlagen-Import**:
  - template-tool-Binärprogramm zur YAML→TOML-Konvertierung
  - Automatische Matcher-Übersetzung (status, word, regex, dsl)
  - Sichere Preflight-Request-Chain-Extraktion
  - Bewahrt Erkennungslogik von Upstream-Vorlagen
- **Duales Erweiterungsmodell**:
  - **Codebasiert**: Rust-Scanner schreiben, die Scanner-Trait für komplexe Logik implementieren
  - **Vorlagenbasiert**: TOML-Vorlagen für signaturbasierte Prüfungen (CVEs, Fehlkonfigurationen) schreiben
  - Beste aus beiden Welten: Leistung + Flexibilität
- **Ergänzende Tools**:
  - Excalibur-Browsererweiterung (HAR-Erfassung)
  - BurpAPIsecuritysuite (manuelles Testen)
  - Workflow: Erfassen → Automatisieren → Tiefentest

### Konfiguration & Steuerung
- **Flexibler Input**:
  - Dateibasierte URL-Listen
  - stdin (Pipe von anderen Tools)
  - HAR-Datei-Import
  - Postman/Insomnia-Sammlungsimport
  - OpenAPI-Spec-Import
- **Granulare Scanner-Steuerung**:
  - Einzelne Scanner aktivieren/deaktivieren
  - Aktiver vs. passiver Modus
  - Dry-Run für aktive Prüfungen
  - Pro-Scanner-Konfiguration
- **Netzwerkkonfiguration**:
  - HTTP/HTTPS-Proxy-Unterstützung
  - TLS-Zertifikatsvalidierungskontrolle
  - Benutzerdefinierte Header und Cookies
  - Konfigurierbare Timeouts und Wiederholungen
- **Scan-Profile**:
  - quickscan.sh (schnell, geringe Auswirkungen)
  - deepscan.sh (umfassend, aktive Prüfungen)
  - inaccessiblescan.sh (erneute Prüfung zuvor unzugänglicher Ziele mit langsameren Einstellungen)
  - baselinescan.sh (Baseline generieren)
  - diffscan.sh (gegen Baseline vergleichen)
  - authscan.sh (authentifiziertes Scannen)
  - sarifscan.sh (CI/CD-Integration)
  - scan-and-report.sh (Scan ausführen + letzten Berichtspfad ausgeben)
  - split-by-host.sh (Ziele nach Host aufteilen und optional Scans verteilen)

## Vergleich mit anderen Tools| Funktion | ApiHunter | Nuclei | ZAP | Burp Suite | ffuf |
|---------|-----------|--------|-----|------------|------|
| **Sprache** | Rust | Go | Java | Java | Go |
| **Leistung** | ⚡⚡⚡ Asynchron, adaptive Nebenläufigkeit | ⚡⚡ Schnell parallel | ⚡ Mäßig | ⚡ Mäßig | ⚡⚡⚡ Sehr schnell |
| **API-First-Design** | ✅ Für APIs entwickelt | ❌ Allgemeines Web | ⚠️ Hybrid | ⚠️ Hybrid | ❌ Fuzzing-Fokus |
| **False-Positive-Filterung** | ✅ SPA-Erkennung, Body-Validierung, Referer-Prüfungen | ⚠️ Template-abhängig | ⚠️ Viele FPs | ✅ Gut | N/A |
| **CORS/CSP-Analyse** | ✅ Tiefgehende Policy-Analyse | ⚠️ Basis-Templates | ✅ Gut | ✅ Gut | ❌ |
| **GraphQL-Introspection** | ✅ Schema-Exposition + Prüfung sensibler Felder | ⚠️ Basis-Erkennung | ⚠️ Eingeschränkt | ✅ Über Erweiterungen | ❌ |
| **OpenAPI/Swagger** | ✅ Sicherheitsschema-Analyse | ❌ | ✅ Nur Import | ✅ Import + Scan | ❌ |
| **JWT-Analyse** | ✅ alg=none, schwache Geheimnisse, Ablauf | ⚠️ Über Templates | ⚠️ Eingeschränkt | ✅ Über Erweiterungen | ❌ |
| **IDOR/BOLA-Erkennung** | ✅ 3-stufig (unauth/range/benutzerübergreifend) | ⚠️ Manuelle Templates | ⚠️ Eingeschränkt | ✅ Manuelles Testen | ❌ |
| **Geheimnis-Erkennung** | ✅ Kontextbewusst (Frontend vs. Backend) | ⚠️ Regex-basiert | ⚠️ Basis | ⚠️ Basis | ❌ |
| **Aktive Prüfungen** | ✅ Opt-in (IDOR, Massenzuweisung, OAuth/OIDC, Websocket, Ratenbegrenzung, CVE-Templates) | ✅ Template-basiert | ✅ Aktiver Scan | ✅ Aktiver Scan | ✅ Fuzzing |
| **WAF-Umgehung** | ✅ UA-Rotation, Verzögerungen, Wiederholungen, adaptives Timing | ⚠️ Basis | ⚠️ Eingeschränkt | ✅ Gut | ⚠️ Basis |
| **CI/CD-Integration** | ✅ NDJSON, SARIF, Exit-Codes | ✅ JSON, SARIF | ⚠️ XML-Berichte | ⚠️ XML/JSON | ✅ JSON |
| **Baseline-Diffing** | ✅ Eingebaut | ❌ Externe Werkzeuge | ❌ | ❌ | ❌ |
| **Auth-Flows** | ✅ JSON-basierter Pre-Scan-Login | ⚠️ Header-Injektion | ✅ Sitzungsverwaltung | ✅ Sitzungsverwaltung | ⚠️ Header-Injektion |
| **Streaming-Ausgabe** | ✅ Echtzeit-NDJSON | ❌ Nur Stapelverarbeitung | ❌ | ❌ | ✅ |
| **Ressourcennutzung** | 🟢 Niedrig (Rust) | 🟢 Niedrig (Go) | 🟡 Hoch (Java) | 🟡 Hoch (Java) | 🟢 Niedrig (Go) |
| **Lernkurve** | 🟢 Einfache CLI | 🟢 Template-Syntax | 🟡 GUI-Komplexität | 🔴 Steil | 🟢 Einfach |
| **Erweiterbarkeit** | ✅ Rust-Trait-System | ✅ YAML-Templates | ✅ Add-ons | ✅ Erweiterungen | ⚠️ Eingeschränkt |
| **Lizenz** | MIT (Kostenlos) | MIT (Kostenlos) | Apache 2.0 (Kostenlos) | Kommerziell | MIT (Kostenlos) |
| **Am besten geeignet für** | API-Sicherheit in CI/CD, Regressionstests, CORS/GraphQL/JWT-Analyse | Allgemeines Schwachstellen-Scanning, CVE-Erkennung | Komplettes Web-App-Pentesting | Manuelles Pentesting, komplexe Arbeitsabläufe | Verzeichnis-/Parameter-Fuzzing |

### Hauptunterschiede

**ApiHunter:** API-First-Design, SPA-Erkennung, Baseline-Diffing, 3-stufige IDOR/BOLA, kontextbewusste Geheimnisse, AIMD-Nebenläufigkeit, **Stealth/WAF-Umgehung (UA-Rotation, Jitter, adaptives Timing)**, **duale Erweiterbarkeit (TOML-Templates + Rust-Module)**  
**Nuclei:** Breitere CVE-Abdeckung, nur YAML-Templates, grundlegende Umgehung  
**ZAP/Burp:** Manuelles Testen, Proxy-Workflows, GUI-basierte Erweiterungen, eingeschränkte Stealth  
**ffuf:** Reines Fuzzing, Inhaltserkennung, eingeschränkte Erweiterbarkeit, grundlegende Umgehung

## Schnellstart```bash
cargo build --release

# Scan URLs from a file (newline-delimited)
./target/release/apihunter --urls ./targets/cve-regression-real-public.txt --format ndjson --output ./results.ndjson

# Or scan URLs from stdin
cat ./targets/cve-regression-real-public.txt | ./target/release/apihunter --stdin --min-severity medium

Desktop-Schnellstart (Tauri + React)

ApiHunter enthält auch eine Desktop-App in apps/desktop.```bash cd apps/desktop npm install npm run tauri dev

root@kitploit:~
Desktop-Scan-Eingabe unterstützt:
- Manuelle Multi-Ziel-Eingabe (eine URL pro Zeile oder kommagetrennt)
- CSV-Import über `Load CSV` (maximal 307.200 Bytes / 300 KiB)
- Geführte Scan-Voreinstellungen: `Quick Passive` und `Deep Active`
- Hartes Limit: bis zu 3.000 Ziele pro Durchlauf (dedupliziert und als absolute `http/https`-URLs validiert)
- Bereichssteuerungen: Discovery ein/aus, Zugänglichkeitsfilter + Timeout, maximale Endpunkte pro Seite
- API-Versionskontrollen: optionaler tiefer Response-Diff-Probing-Umschalter
- Erweiterte Steuerungen: Proxy, Header, Cookies, Bearer/Basic-Auth, TLS ungültiges Zertifikat umschalten
- Blind-SSRF-Callback-Korrelationseingabe (`OAST callback base`) für aktive Prüfungen
- Leistungssteuerungen: Clients pro Host, adaptive Parallelität, WAF-Umgehung mit benutzerdefiniertem User-Agent-Pool
- Vollständige Scanner-Umschaltabdeckung einschließlich `API Versioning` und `gRPC/Protobuf`
- Zusammenklappbare Scan-Abschnitte mit rechtsbündigen Carets; `Safety and Scan Behavior`, `Runtime Limits` und `Scanner toggles` sind standardmäßig zugeklappt
- Parallel-Lauf-Fortschrittskarten mit Abschluss-/Ergebnis-Snapshots pro Ziel
- Ergebnisanalyse-Dashboard: Schweregrad-Wärmekarte, schlechtestes Ziel-Karte, Scan-Effizienz, Scanner-Abdeckung, häufigste angreifbare Pfade, Aufschlüsselung der Prüfschweregrade
- Sitzungspersistenz: letzte Scan-Ergebnisse werden beim nächsten Start automatisch wiederhergestellt
- Enrich-Mode-Panel: NDJSON-Ergebnisse laden, Threat-Intelligence-Anreicherung ausführen, Hosts mit hoher Bewertung direkt in Vollscan mit Deep Active-Voreinstellung überführen
- Export-UI: Größenangaben + `Save All Reports` + pro Durchlauf Zeitstempel-Dateinamen; Exporte enthalten JSON-Bündel pro Ziel, NDJSON, SARIF, Insomnia-Sammlung und Insomnia-Runner-Daten

Siehe [HOWTO.md](https://github.com/teycir/apihunter/blob/main/HOWTO.md) für detaillierte Nutzung, [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/main/docs/lab-setup.md) für Vulhub-basierte CVE-Validierungslabore und [docs/](https://github.com/teycir/apihunter/blob/main/docs) für interne Details.

Wenn Sie ein Desktop-Binärpaket für die Veröffentlichung möchten:```bash
cd apps/desktop
npm run tauri build
./src-tauri/target/release/apihunter-desktop

Installieren Sie ein anklickbares Linux-App-Symbol/Launcher:```bash cd apps/desktop npm run desktop:install-icon

root@kitploit:~
Hinweis: Der Desktop-Entwicklungsstart verwendet jetzt direkt die erstellten Frontend-Assets und benötigt keinen separaten `localhost:1420`-Server.

Siehe [HOWTO.md](https://github.com/teycir/apihunter/blob/main/HOWTO.md) für detaillierte Nutzung, [docs/lab-setup.md](https://github.com/teycir/apihunter/blob/main/docs/lab-setup.md) für Vulhub-basierte CVE-Validierungslabore und [docs/](https://github.com/teycir/apihunter/blob/main/docs) für Interna.

### Beispiel-NDJSON-Fund```json
{
  "url": "https://api.example.com/graphql",
  "check": "graphql/introspection-enabled",
  "title": "GraphQL introspection is enabled",
  "severity": "MEDIUM",
  "detail": "Introspection query returned schema metadata from a public endpoint.",
  "evidence": "POST /graphql -> HTTP 200 with __schema fields in response body",
  "scanner": "graphql",
  "timestamp": "2026-03-19T14:02:11.824Z"
}

Architektur```

main.rs ──► cli.rs (args) ──► config.rs (Config) │ runner.rs (orchestration) ┌──────┴────────────────────────────┐ discovery/ scanner/ ├─ robots.rs ├─ cors.rs ├─ sitemap.rs ├─ csp.rs ├─ swagger.rs ├─ jwt.rs ├─ js.rs ├─ graphql.rs ├─ headers.rs ├─ openapi.rs └─ common_paths.rs ├─ api_security.rs ├─ api_versioning.rs ├─ grpc_protobuf.rs ├─ mass_assignment.rs ├─ oauth_oidc.rs http_client.rs ├─ rate_limit.rs auth.rs ├─ cve_templates.rs waf.rs └─ websocket.rs reports.rs error.rs

root@kitploit:~
**Flow:** CLI args → Config → Runner orchestriert Discovery + Scanners → HTTP Client (mit Auth/WAF) → Reports

## Vorlagen-Tooling

ApiHunter unterstützt **duale Erweiterbarkeit**: fügen Sie Prüfungen über **TOML-Vorlagen** (kein Code) oder **Rust-Module** (volle Kontrolle) hinzu.

### TOML-Vorlagenformat
Erstellen Sie benutzerdefinierte Prüfungen in `assets/cve_templates/*.toml`:```toml
id = "custom-api-check"
name = "Custom API Vulnerability"
severity = "high"

[[requests]]
method = "GET"
path = "/api/vulnerable"

[[requests.matchers]]
type = "status"
values = [200]

[[requests.matchers]]
type = "word"
part = "body"
words = ["sensitive_data", "exposed"]

Nuclei-Vorlagen importieren

Konvertieren Sie vorhandene Nuclei YAML-Vorlagen:```bash cargo run --bin template-tool -- import-nuclei
--input tests/fixtures/upstream_nuclei/CVE-2022-24288.yaml
--output assets/cve_templates/cve-2022-24288.toml

root@kitploit:~
### Eigene Rust-Scanner hinzufügen
Implementieren Sie das `Scanner`-Trait für komplexe Logik:```rust
#[async_trait]
impl Scanner for MyCustomScanner {
    async fn scan(
        &self,
        url: &str,
        client: &HttpClient,
        config: &Config,
    ) -> (Vec<Finding>, Vec<CapturedError>) {
        // Your custom scanning logic
    }
}

Siehe HOWTO.md und docs/scanners.md für Details.

Scan-Skripte

ScanScripts/ enthält praktische Wrapper für gängige Scan-Profile:

  • quickscan.sh - Schneller, schonender Scan (concurrency: 10, max-endpoints: 20, timeout: 5s, retries: 0, delay: 50ms)
  • deepscan.sh - Umfassender Scan mit aktiven Prüfungen (adaptive concurrency, per-host clients, unlimited endpoints, retries: 3, timeout: 20s, delay: 200ms)
  • defaultscan.sh - Mit CLI-Standardeinstellungen ausführen (keine voreingestellten Flags)
  • baselinescan.sh - Basis-NDJSON für Diff-Vergleiche generieren
  • diffscan.sh - Mit Basis vergleichen und nur neue Funde melden
  • authscan.sh - Authentifizierter Scan mit Auth-Flows (erfordert --auth-flow, aktiviert aktive Prüfungen, WAF-Umgehung, retries: 2, timeout: 15s, delay: 150ms)
  • sarifscan.sh - SARIF-Format für CI/CD-Integration ausgeben
  • inaccessiblescan.sh - Zuvor unerreichbare URLs erneut scannen mit konservativen Wiederholungsversuchen/Timeouts
  • scan-and-report.sh - Scan ausführen und den Pfad des letzten automatisch gespeicherten Berichts ausgeben
  • split-by-host.sh - URL-Liste in pro-Host-Dateien aufteilen und optional parallel scannen

Verwendungsbeispiele```bash

Quick scan from file

./ScanScripts/quickscan.sh targets/cve-regression-real-public.txt

Deep scan from stdin

cat targets/cve-regression-real-public.txt | ./ScanScripts/deepscan.sh --stdin

Generate baseline

./ScanScripts/baselinescan.sh targets/cve-regression-real-public.txt

Compare against baseline

./ScanScripts/diffscan.sh targets/cve-regression-real-public.txt baseline.ndjson

Authenticated scan

./ScanScripts/authscan.sh targets/cve-regression-real-public.txt --auth-flow auth.json

SARIF output for GitHub Code Scanning

./ScanScripts/sarifscan.sh targets/cve-regression-real-public.txt

Split by host and scan in parallel

./ScanScripts/split-by-host.sh targets/cve-regression-real-public.txt --scan-cmd ./ScanScripts/quickscan.sh --jobs 4

root@kitploit:~
Alle Wrapper-Skripte außer `split-by-host.sh` unterstützen `--stdin` und nachgestellte ApiHunter-Flags.

## Teststrategie

ApiHunter-Tests sind nach Absicht unterteilt:

- **Unit-Tests** (`tests/*_scanner.rs`, Parser-/Konfigurationstests): Scannerlogik und Randfälle.
- **Integrationstests** (`tests/integration_runner.rs`, Start-/CLI-Verhalten): Orchestrierung und Laufzeitverdrahtung.
- **Fixture-Regressionstests** (`tests/cve_templates_real_data.rs`, `tests/cve_templates_upstream_parity.rs`): Reale Payloads abspielen und mit festgelegten Upstream-Vorlagen vergleichen.
- **Mock-Server-Tests** (mehrere Scanner-Suiten): Deterministisches Verhalten ohne Abhängigkeit von Internet-Zielen.
- **Live-Ziel-Überprüfungen**: Optional/manuell (nicht Teil des standardmäßigen `cargo test`).

Siehe den dedizierten [Testleitfaden](https://github.com/teycir/apihunter/blob/main/docs/testing.md) für die vollständige Testmatrix und Coverage-Karte.

Fokussierte Suiten ausführen:```bash
cargo test --test cors_scanner
cargo test --test graphql_scanner
cargo test --test cve_templates_runtime_ext
cargo test --test integration_runner

Vollständige Validierung ausführen:```bash cargo test

root@kitploit:~
Führen Sie das real-data integration gate aus (Fixtures + live ignored suites):```bash
# Fixture-backed real payload regression suites
cargo test --test cve_templates_real_data --test cve_templates_upstream_parity --test cve_templates_runtime_ext

# Manual live internet integration suites (ignored by default)
cargo test --test live_vulnerable_apis --test live_real_world_targets -- --ignored

Live-Suites verwenden Standard-Zielinventare:

  • targets/vuln-api-regression-real-public.txt
  • targets/real-world-integration-public.txt

Sie können überschreiben mit:

  • APIHUNTER_LIVE_VULN_TARGET_FILE oder APIHUNTER_LIVE_VULN_TARGETS
  • APIHUNTER_LIVE_REAL_TARGET_FILE oder APIHUNTER_LIVE_REAL_TARGETS

Dokumentation

Die vollständige Dokumentation befindet sich in docs/. Beginnen Sie mit:

  • Dokumentationsindex
  • Desktop-App-Leitfaden
  • Architektur
  • Konfiguration
  • Authentifizierungsablauf
  • Testleitfaden
  • Operations-Runbook
  • Scanner
  • Ergebnisse & Behebung
  • Sicherheitsrichtlinie
  • HOWTO
  • Triage-Modus
  • Enrich-Modus

Roadmap

Abgeschlossen (v0.7.0): Glass UI-Neugestaltung, Scan-Persistenz (Letzter-Scan-Speicher), Analyse-Dashboard für Ergebnisse (Schweregrad-Wärmekarte, Karte des schlechtesten Ziels, Scan-Effizienz, Scanner-Abdeckung, Aufschlüsselung des Prüfschweregrads), Enrich → Deep-Scan-Beförderungsablauf, Triage-/Threat-Intel-Modus, Erkennungskonfiguration, WebSocket-/Massenzuweisungs-/OAuth-/Ratenbegrenzungs-/CVE-Scanner, erweiterter Nuclei-Importeur, Docker-Image
Als Nächstes: Aufteilung der App.tsx-Komponente, Ringpuffer für Scan-Verlauf, Detail-Schublade für Befunde, HTML/PDF-Berichtsexport, native GitHub Actions-Aktion, zeitliche Steuerung pro Ziel im Live-Fortschritt

Installation

CLI-Installation

Erfordert Rust stable (getestet auf 1.76+).```bash git clone https://github.com/Teycir/ApiHunter cd ApiHunter cargo build --release

root@kitploit:~
### Vorgefertigte Release-Artefakte

Getaggte Releases (`v*`) veröffentlichen vorgefertigte `apihunter`-Binärdateien für:

- Linux (`x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`)
- macOS (`x86_64-apple-darwin`)
- Windows (`x86_64-pc-windows-msvc`)

Jedes Release veröffentlicht auch Lieferketten-Artefakte:

- SHA256-Prüfsummendateien (`*.sha256`)
- Sigstore schlüsselloses Signaturmaterial (`*.sig`, `*.pem`, `*.sigstore.json`)
- SPDX JSON SBOM (`apihunter-release-assets-sbom.spdx.json`)
- GitHub-Artefaktbescheinigungen (Herkunfts- und SBOM-Bescheinigungsmetadaten)

Herunterladen von [GitHub Releases](https://github.com/Teycir/ApiHunter/releases).

### Desktop-Installation (Tauri + React)

Der Quellcode der Desktop-App befindet sich in `apps/desktop`.

Erstellen und Ausführen einer Produktions-Desktop-Binärdatei:```bash
cd apps/desktop
npm install
npm run tauri build
./src-tauri/target/release/apihunter-desktop

Für den Entwicklungsmodus:```bash cd apps/desktop npm run tauri dev

root@kitploit:~
Installiere ein klickbares Linux-Startersymbol:```bash
cd apps/desktop
npm run desktop:install-icon

Desktop-Funktionen (kurz):

  • Multi-Target-Scans (bis zu 3.000 Ziele) mit manueller Eingabe + CSV-Import (300 KiB Limit)
  • Geführte Einrichtungsvoreinstellungen: Quick Passive und Deep Active
  • Live-Fortschritts-UI mit pro-Ziel-Statuskarten
  • Vollständige Scan-Profilsteuerung (Erkennung/Filterung, Wiederholungen/Zeitüberschreitungen, Scanner-Umschalter)
  • Einklappbare Scan-Abschnitte mit rechtsbündigen Caret-Symbolen; umfangreiche Unterabschnitte standardmäßig eingeklappt
  • API-Versionierung: Deep-Response-Diff-Umschalter und OAST-Callback-Basissteuerung
  • Erweiterte Laufzeitsteuerung (Proxy/Auth-Header/Cookies, TLS-Umschalter, WAF/adaptive/pro-Host-Optionen)
  • Ergebnis-Analyse-Dashboard: Schweregrad-Wärmekarte, schlechtestes Ziel, Scan-Effizienz, Scanner-Abdeckung, Prüf-Schweregrad-Aufschlüsselung, Top-gefährdete Pfade, Zusammenfassung pro Ziel
  • Sitzungspersistenz: Letzter Scan wird beim nächsten Start automatisch wiederhergestellt, mit Zeitstempel-Abzeichen
  • Enrich-Mode-Panel: Threat-Intel-Anreicherung mit pro-Host-Werbe-zu-Tiefenscan-Ablauf
  • Export mit einem Klick für pro-Ziel-JSON-Bündel, NDJSON, SARIF, Insomnia-Sammlung und Insomnia-Runner-Daten

Docker```bash

docker build -t apihunter:local . docker run --rm apihunter:local --help

root@kitploit:~
Führen Sie einen Scan von Dateien in Ihrem aktuellen Verzeichnis aus:```bash
docker run --rm -v "$PWD:/work" apihunter:local \
  --urls /work/targets/cve-regression-real-public.txt \
  --format ndjson \
  --output /work/results.ndjson

CLI-Referenz

*Sie müssen genau eine der Optionen --urls, --stdin, --har oder --collection angeben.

Exit-Codes

Sicherheits- & rechtliche Schutzmaßnahmen

  • --proxy deaktiviert die TLS-Überprüfung nicht von sich aus. Zertifikatsprüfungen bleiben aktiviert, es sei denn, --danger-accept-invalid-certs wird explizit gesetzt.
  • --danger-accept-invalid-certs ist nur für kontrollierte Labor-/Debug-Zwecke gedacht. ApiHunter gibt eine explizite Laufzeitwarnung aus, wenn dieses Flag aktiviert ist.
  • --waf-evasion und aktive Probes können IDS-/WAF-Warnungen auslösen. Nur mit ausdrücklicher schriftlicher Genehmigung und innerhalb vereinbarter Testfenster ausführen.
  • Für CI- oder produktionsnahe Prüfungen zuerst den passiven Modus bevorzugen, dann aktive Prüfungen auf genehmigte Ziele beschränken.

Verwandte Projekte

ApiHunter ist Teil eines komplementären Sicherheitstest-Toolkits:

  • Excalibur – Browsererweiterung zum Erfassen von API-Traffic und Exportieren von HAR-Dateien mit Session-Cookies. Verwendung mit ApiHunter über die Flags --har und --session-file.
  • BurpAPIsecuritysuite – Burp-Suite-Erweiterung für interaktive API-Sicherheitstests. Ergänzt ApiHunters automatisierte Scans um manuelle Testworkflows.

Workflow: Traffic mit Excalibur erfassen → Automatisierte Baseline mit ApiHunter → Tiefgehende manuelle Tests mit BurpAPIsecuritysuite

Über

Autor: Teycir Ben Soltane
E-Mail: [email protected]
Webseite: teycirbensoltane.tn

FAQ

F: Warum ApiHunter im Vergleich zu Nuclei/ZAP/Burp?
A: API-first-Design, SPA-Erkennung, Baseline-Diffing, 3-stufiger IDOR, kontextbewusste Geheimnisse. Ergänzend zu Nuclei (CVE-Abdeckung) und ZAP/Burp (manuelles Testen).

F: Produktionssicher?
A: Ja. Verwenden Sie --delay-ms und reduzieren Sie --concurrency. Probieren Sie quickscan.sh.

F: Authentifizierte Scans?
A: --auth-bearer, --auth-basic oder --auth-flow. Für IDOR: --auth-flow-b.

F: Geschwindigkeitsvergleich (1000 Endpunkte)?
Hängt von der Endpunktlatenz, Wiederholungen, Zielverhalten und aktivierten Prüfungen ab. Nutzen Sie --concurrency, --delay-ms und --active-checks, um Durchsatz vs. Auswirkungen zu optimieren.

F: Langsamer Scan?
Erhöhen Sie --concurrency (Standard: 20), reduzieren Sie --delay-ms (Standard: 150ms), aktivieren Sie --adaptive-concurrency.

F: Ausgabeformate?
pretty (Standard), ndjson (Streaming), sarif (CI-Integration).

F: CI/CD-Integration?```bash ./target/release/apihunter --urls targets/cve-regression-real-public.txt --fail-on medium --format sarif --output results.sarif

root@kitploit:~
**F: Baseline-Diffing?**```bash
./target/release/apihunter --urls targets/cve-regression-real-public.txt --format ndjson --output baseline.ndjson
./target/release/apihunter --urls targets/cve-regression-real-public.txt --baseline baseline.ndjson --format ndjson

F: Passive vs active checks?
Passiv (Standard): Antworten analysieren. Aktiv (--active-checks): gezielte Anfragen senden (IDOR, Mass-Assignment, OAuth, Rate-Limit, CVE-Probes).

F: CORS-Testing?
Dynamische Origin-Generierung: null, https://evil.com, https://<target>.evil.com, https://evil<target>. Testet Regex-Umgehungen, wenn reflektiert.

F: IDOR-Erkennung?
3-stufig: (1) unauthentifizierter Abruf, (2) ID-Enumeration (±2), (3) Cross-User (--auth-flow-b).

F: Geheimniserkennung?
AWS/Google/GitHub/Slack/Stripe-Keys, Bearer-Tokens, DB-URLs, private Schlüssel. Kontextbewusste Validierung.

F: Cookies?
--cookies "session=abc", --session-file excalibur.json oder --auth-flow login.json.

F: Proxy?
--proxy http://proxy.corp.com:8080

F: Debug-Logging?
RUST_LOG=debug ./target/release/apihunter --urls targets/cve-regression-real-public.txt

F: Adaptive Parallelität?
AIMD: Erhöht um 1 alle 5s, halbiert bei Fehlern (429/503/Timeouts). Aktivieren mit --adaptive-concurrency.

F: Scanner deaktivieren?
--no-cors, --no-csp, --no-graphql, --no-api-security, --no-jwt, --no-openapi, --no-api-versioning, --no-mass-assignment, --no-oauth-oidc, --no-rate-limit, --no-cve-templates, --no-websocket.

F: Ist ApiHunter heimlich?
A: Ja. Funktionen: UA-Rotation von 100+ echten Browsern (assets/user_agents.txt), zufällige Verzögerungen mit Jitter, host-basiertes Rate-Limiting, adaptiver Backoff bei 429/503, keine Scanner-Fingerabdrücke in Headern, exponentielle Wiederholungslogik, benutzerdefinierte Header-Injection. Aktivieren mit --waf-evasion.

F: Wie funktioniert WAF-Evasion?
A: Rotiert automatisch User-Agents aus kuratierter Liste, fügt zufälligen Jitter zu Verzögerungen hinzu, erzwingt host-basierte Zeitsteuerung (keine globalen Bursts), fährt bei Ratenbegrenzungen exponentiell zurück und erlaubt benutzerdefinierte Header-Injektion, um sich mit legitimen Traffic zu vermischen. Keine "Scanner"-Strings in Standard-Headern.

Siehe CONTRIBUTING.md für Entwicklungsrichtlinien.

License

MIT

Tool herunterladen
FlagStandardBeschreibung
--urlserforderlich*Pfad zu einer Datei mit zeilenweise getrennten URLs
--stdinausURLs zeilenweise von der Standardeingabe lesen
--harausMutmaßliche API-Anfrage-URLs aus HAR importieren (log.entries[].request.url)
--collectionausMutmaßliche API-Anfrage-URLs aus Postman/Insomnia-Collection-Export-JSON importieren
--outputstdoutErgebnisse in eine Datei statt auf stdout schreiben
--formatprettyAusgabeformat: pretty, ndjson oder sarif
--streamausNDJSON-Erkenntnisse während des Eintreffens streamen
--baselinekeineBaseline-NDJSON für reine Diff-Erkenntnisse
--quietausNicht-Fehler-Ergebnisse auf stdout unterdrücken
--summaryausZusammenfassung auch im Quiet-Modus ausgeben
--no-auto-reportausKeine lokalen Auto-Berichte unter ~/Documents/ApiHunterReports schreiben
--min-severityinfoErkenntnisse unterhalb dieses Schweregrads filtern
--fail-onmediumMit Fehler beenden bei oder oberhalb dieses Schweregrads
--concurrency20Maximale gleichzeitige Anfragen
--max-endpoints50Gescannte Endpunkte pro Site begrenzen (0 = unbegrenzt)
--delay-ms150Mindestverzögerung zwischen Anfragen pro Host
--retries1Wiederholungsversuche bei flüchtigen Fehlern
--timeout-secs8Timeout pro Anfrage in Sekunden
--no-filterausVorab-Filterung unerreichbarer URLs überspringen
--filter-timeout3Timeout für Erreichbarkeits-Vorabprüfung (Sekunden)
--no-discoveryausEndpunkt-Erkennung überspringen und nur bereitgestellte Start-URLs scannen
--waf-evasionausWAF-Umgehungsheuristiken aktivieren
--user-agentskeineKomma-getrennte UA-Liste (impliziert WAF-Evasion)
--headerskeineZusätzliche Anfrage-Header (z.B. Authorization: Bearer ...)
--cookieskeineKomma-getrennte Cookies (z.B. session=abc,theme=dark)
--auth-bearerkeineAuthorization: Bearer <token> hinzufügen
--auth-basickeineHTTP-Basic-Authentifizierung hinzufügen (user:pass)
--auth-flowkeineJSON-Auth-Flow-Datei (Pre-Scan-Login)
--auth-flow-bkeineZweiter Auth-Flow für benutzerübergreifende IDOR-Prüfungen
--unauth-strip-headerskeineZusätzliche Header-Namen zum Entfernen für unauth-Probes
--session-filekeineCookies aus Excalibur-Session-JSON laden/speichern ({"hosts": {...}})
--proxykeineHTTP/HTTPS-Proxy-URL
--danger-accept-invalid-certsausTLS-Zertifikatprüfung überspringen
--active-checksausAktive (potenziell invasive) Probes aktivieren
--dry-runausActive Checks trocken testen (beabsichtigte Probes melden, ohne Mutationsanfragen zu senden)
--response-diff-deepausTiefere Response-Diff-Varianten-Probes bei API-Versionierungsprüfungen aktivieren
--per-host-clientsausPro-Host-HTTP-Client-Pools verwenden
--adaptive-concurrencyausAdaptive Gleichzeitigkeit (AIMD)
--no-corsausCORS-Scanner deaktivieren
--no-cspausCSP-Scanner deaktivieren
--no-graphqlausGraphQL-Scanner deaktivieren
--no-api-securityausAPI-Sicherheitsscanner deaktivieren
--no-jwtausJWT-Scanner deaktivieren
--no-openapiausOpenAPI-Scanner deaktivieren
--no-api-versioningausAPI-Versionierungs-Scanner deaktivieren
--no-grpc-protobufausgRPC/Protobuf-Scanner deaktivieren
--no-mass-assignmentausMass-Assignment-Scanner deaktivieren (Active Checks)
--no-oauth-oidcausOAuth/OIDC-Scanner deaktivieren (Active Checks)
--no-rate-limitausRate-Limit-Scanner deaktivieren (Active Checks)
--no-cve-templatesausCVE-Vorlagen-Scanner deaktivieren (Active Checks)
--no-websocketausWebSocket-Scanner deaktivieren (Active Checks)
CodeBedeutung
0Keine Erkenntnisse auf/über dem --fail-on-Schwellenwert und keine Fehler
1Eine oder mehrere Erkenntnisse auf/über dem --fail-on-Schwellenwert
2Ein oder mehrere Scanner haben Fehler aufgezeichnet
3Sowohl Erkenntnisse als auch Fehler