
🛡️ Hochleistungs-WAF- & CDN-Erkennungstool. Identifizieren Sie Schutzschichten (Cloudflare, Akamai, AWS, Fastly und mehr), führen Sie Effektivitäts- und Durchsetzungstests mit Evasion-Payloads durch und erstellen Sie Posture-Berichte. In Rust entwickelt 🦀.
CLI-Tool zum Erkennen, Testen und Profilieren von Web Application Firewalls (WAFs) und Content Delivery Networks (CDNs).
Wichtig: Testen Sie nur Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche Testgenehmigung haben.
Für KI-Coding-Agents: Siehe AGENTS.md für Skill-Mapping und Workflow-Hinweise. Verwenden Sie agent-skills/waf-assess/WORKFLOW.md für vollständige Assessments; verwenden Sie agent-skills/validate-build/WORKFLOW.md vor dem Merge.
| Modus | Was getestet wird | Flag |
|---|
| Erkennung | Identifiziert, welche WAF/CDN ein Ziel schützt | waf-detect <url> |
| Smoke-Test | Sendet bekannte Angriffs-Payloads, misst Blockraten | --smoke-test <url> |
| Durchsetzungstest | Sendet kategorisierte Angriffssonden, misst Block/Challenge/Allow | --va <url> |
| Verhaltensanalyse | Gepaarte Sonden zur Prüfung der WAF-Sophistication über 5 Kanäle | --va2 <url> --va2-run |
| Posture-Bericht | Einheitliche Bewertung (A-F) aus allen Testergebnissen | --posture <url> |
| HTML-Bericht | Rendert gespeicherte JSON-Ergebnisse in einen teilbaren statischen Bericht | report <file.json> |
cargo build --release
./target/release/waf-detect scan example.com
# Full hardening scan + HTML report
./target/release/waf-detect hardening https://example.com --output /tmp/example-hardening.json
./target/release/waf-detect report /tmp/example-hardening.json --output /tmp/example-hardening.html
| Modus | Befehl |
|---|---|
| Erkennung | waf-detect scan <url> oder waf-detect <url> |
| Hardening | waf-detect hardening <url> --output file.json |
| Smoke-Test | waf-detect --smoke-test <url> |
| Durchsetzung | waf-detect va <url> |
| Verhalten | waf-detect va2 <url> --run |
| Posture | waf-detect --posture <url> |
| Effektivität | waf-detect --effectiveness <url> |
| Origin-Probe | waf-detect origin-probe <url> --json |
| HTML-Bericht | waf-detect report <file.json> -o <file.html> |
Identifiziert WAF/CDN über Header, Body, DNS, TLS und Timing. 12 Anbieter: CloudFlare, AWS, Akamai, Fastly, Vercel, Azure, F5, Imperva, ModSecurity, Sucuri, Radware, FortiWeb.
waf-detect scan example.com --json
waf-detect scan @urls.txt --ndjson
Sendet bekannte Angriffs-Payloads und misst, was die WAF blockiert, mit Challenge belegt oder durchlässt. Aktives Smoke-Testing läuft nur gegen registrierte, eigene Ziele.
./target/release/waf-detect --smoke-test example.com
# Aggressive mode (more payloads)
./target/release/waf-detect --smoke-test example.com --aggressive
# Export results
./target/release/waf-detect --smoke-test example.com -o results.json
Getestete Angriffskategorien: SQL-Injection (Basis + erweitert), XSS (Basis + erweitert), Command Injection, Path Traversal, SSTI, SSRF, Log4Shell, Datei-Upload, Scanner-Erkennung, GraphQL-Injection, HTTP Request Smuggling, Prototype Pollution, WebSocket-Injection, Enumeration.
Ergebnisklassifizierungen:
BLOCKED — WAF hat die Anfrage blockiert (typischerweise 403)CHALLENGE — Bot-Schutz ausgelöst (JS-Challenge, CAPTCHA)ALLOWED — Anfrage wurde an den Origin durchgelassenERROR — Nicht blockierender Fehler (404, 500, Timeout)Sendet kategorisierte Angriffssonden und misst Block/Challenge/Allow-Raten mit Konfidenzbewertung. Erfordert registrierten Ziel-Scope.
# Register owned targets once
./target/release/waf-detect --scope init example.com
# Run enforcement test
./target/release/waf-detect --va https://example.com
# With JSON output
./target/release/waf-detect --va https://example.com --va-json
# Save report
./target/release/waf-detect --va https://example.com --va-output report.json
Optionen:
--va-tier 1|2|3 — Sicherheitsstufe (1 = am sichersten)--va-budget N — Max. Anfragen pro Lauf (Standard: 120)--va-timeout SECONDS — Timeout pro Anfrage (Standard: 15)--va-delay MS — Verzögerung zwischen Anfragen (Standard: 750)--va-variants N — Varianten pro Payload-Template (Standard: 4)--va-replay — Replay-Plan als JSON exportieren--va-replay-csv — Replay-Plan als CSV exportierenTestet die WAF-Sophistication durch Senden gepaarter Sonden — eine gutartig, eine bösartig — über 5 HTTP-Kanäle. Misst, ob die WAF sie unterschiedlich behandelt.
# Dry run (shows plan without executing)
./target/release/waf-detect --va2 https://example.com
# Run behavioral analysis
./target/release/waf-detect --va2 https://example.com --va2-run
# Full 5-phase analysis
./target/release/waf-detect --va2 https://example.com --va2-run \
--va2-phases baseline,protocol-variance,state-escalation,behavioral-pressure,challenge-interaction
# Save results
./target/release/waf-detect --va2 https://example.com --va2-run --va2-output results.json
Was gemessen wird:
| Signal | Was getestet wird |
|---|---|
| Encoding Defense | Normalisiert die WAF kodierte Pfade vor dem Matching? |
| Session Tracking | Verfolgt die WAF den Session-Status und eskaliert bei wiederholtem Missbrauch? |
| Bot Challenge | Gibt die WAF CAPTCHA- oder JS-Challenges aus? |
| Rate Limiting | Drosselt die WAF schnelle Anfragen? |
| Attack Recognition | Unterscheidet die WAF Angriffssonden von gutartigen Anfragen? |
Getestete Kanäle: Path, Query, Header, Body, Method. Kanäle mit 0 % Angriffserkennung werden als ungeschützt markiert.
Optionen:
--va2-phases LIST — Auszuführende Phasen (kommagetrennt)--va2-seed N — Deterministischer Seed für reproduzierbare Ergebnisse (Standard: 1337)--va2-budget N — Anfragebudget (Standard: 60)--va2-json — Plan/Bericht als JSON ausgebenErzeugt eine einheitliche Sicherheitsbewertung (A-F) und einen Risikoscore (0-100), der Erkennungskonfidenz, Durchsetzungsergebnisse und Verhaltensanalyse kombiniert.
# Detection only
./target/release/waf-detect --posture example.com
# Include behavioral analysis
./target/release/waf-detect --posture example.com --posture-va2
# Include enforcement testing (VA1) -- distinguishes "WAF present but not
# enforcing" (monitor/log-only mode) from "no WAF at all"
./target/release/waf-detect --posture example.com --posture-va1
# JSON output
./target/release/waf-detect --posture example.com --posture-va2 --posture-json
Bewertungsskala:
Rendert ein gespeichertes JSON-Scan-Artefakt in einen statischen HTML-Bericht, der lokal leicht zu prüfen und mit anderen Engineers zu teilen ist.
# Render a saved hardening report
./target/release/waf-detect hardening https://example.com --output /tmp/example-hardening.json
./target/release/waf-detect report /tmp/example-hardening.json
# Render a saved posture report
./target/release/waf-detect --posture https://example.com --posture-va2 --posture-json > /tmp/example-posture.json
./target/release/waf-detect report /tmp/example-posture.json --output /tmp/example-posture.html
Das generierte HTML ist statisch und eigenständig, sodass es an Tickets angehängt, im Chat geteilt oder lokal geöffnet werden kann, ohne den Scan erneut auszuführen.
Smoke-Test, Payload-Analyse, Durchsetzung, Verhaltensanalyse und Effektivitätstests erfordern registrierte, eigene Ziele.
# Check target scope
./target/release/waf-detect --scope
# Initialize target scope
./target/release/waf-detect --scope init example.com api.example.com
# Add authorized target
./target/release/waf-detect --scope add-target admin.example.com
# Remove target
./target/release/waf-detect --scope remove-target api.example.com
# Clear target scope
./target/release/waf-detect --scope clear
Risikoscores (Posture-Bericht):
Häufige Befunde:
# List supported providers
./target/release/waf-detect --list
# Effectiveness testing (advanced evasion techniques)
./target/release/waf-detect --effectiveness example.com
# Benchmark against corpus
./target/release/waf-detect --benchmark corpus.json
# Performance snapshot
./target/release/waf-detect example.com --perf-report perf.json
# Debug output
./target/release/waf-detect example.com --debug --verbose
Ausgabeoptionen: --json / --ndjson / --compact / --yaml · waf-detect providers · waf-detect doctor
cargo test --lib
cargo clippy -- -D warnings
cargo fmt
Siehe DEVELOPMENT.md für vollständige Details.
Lizenziert unter einer von
nach Ihrer Wahl.
Sofern Sie nicht ausdrücklich anders angeben, wird jeder Beitrag, den Sie absichtlich zur Aufnahme in das Werk einreichen, wie in der Apache-2.0-Lizenz definiert, wie oben dual lizenziert, ohne zusätzliche Bedingungen oder Einschränkungen.