
Ein Programm zum Testen der WAF-Funktionalität
Enterprise-WAF-Bewertungstool — Echte Angriffspayloads. Echte Ergebnisse. Compliance-bereite Berichte.
WAF-Tester bewertet Web Application Firewalls, indem echte Angriffspayloads an eine benutzerdefinierte URL gesendet wird und gemeldet wird, ob diese blockiert werden. Verfügbar als Windows-Desktop-App (Electron) und als Python-CLI, die überall läuft.

Dieses Tool ist ausschließlich für autorisierte Sicherheitstests bestimmt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Das unbefugte Testen von Systemen Dritter kann gegen den Computer Fraud and Abuse Act (CFAA) und gleichwertige Gesetze in Ihrem Land verstoßen. Die Autoren übernehmen keine Haftung für Missbrauch.
| Suite | Tests | Abdeckung |
|---|---|---|
| OWASP / CWE Core | 44 | SQL-Injection (12 Varianten), XSS (10 Varianten), Path Traversal, Command Injection, XXE, SSRF, Log4Shell, SSTI, Open Redirect |
| Rate Limiting | 3 | Burst-Flood (30 gleichzeitig), Sequentieller Flood, X-Forwarded-For-IP-Rotationsumgehung |
| Bot-Erkennung | 10 | sqlmap, Nikto, Nmap, Scrapy, Masscan, HeadlessChrome, python-requests, curl, leere UA, fehlende Accept-Header |
| Bypass-Versuche | 15 | Doppelte URL-Kodierung, Unicode Fullwidth, Nullbytes, Groß-/Kleinschreibungsvariation, Kommentar-Verschleierung, CRLF-Injection, Host-Header-Injection, Methoden-Override, Pfad-Tricks |
| API-Sicherheit | 10 | GraphQL-Introspection/Batch/Enumeration, JWT-Algorithmus-None & -Verwirrung, Mass Assignment, HTTP-Verb-Tampering, BOLA, Content-Type-Verwirrung |
| Geschäftslogik | 8 | Negative Menge, Nullpreis-Einreichung, Admin-Endpunkt-Zugriff, HTTP-Parameter-Verschmutzung, Account-Enumeration, übermäßige Datensammlung, Erzwungenes Browsen, Privilegieneskalation |
Jeder Test ist mit einem oder mehreren Compliance-Frameworks getaggt:
HIGH, LIKELY oder UNCERTAIN bewertet, anstatt mit binärem Bestanden/Nicht bestandengit clone https://github.com/kpomin57/waf-tester.git
cd waf-tester
npm install
npm start
npm run build
Die Ausgabe erscheint in dist/ sowohl als NSIS-Installer als auch als tragbare .exe. Auf dem Zielrechner sind keine Voraussetzungen erforderlich – Electron bündelt seine eigene Laufzeit.
Eine einzeitige Python-Version, die überall läuft, wo Python verfügbar ist – Linux-Server, CI/CD-Pipelines, Docker-Container, WSL oder jede Umgebung, in der die Windows-.exe keine Option ist.
pip install rich requests
python waf_tester.py --url https://target.example.com
Führt alle 90 Tests aus, fordert eine Autorisierungsbestätigung an, gibt farbcodierte Ergebnisse auf dem Terminal aus und speichert sowohl einen JSON- als auch einen HTML-Bericht im aktuellen Verzeichnis.
| Flag | Beschreibung | Standard |
|---|---|---|
--url | Ziel-URL (erforderlich) | — |
--suites | Kommagetrennte Suites, die ausgeführt werden sollen | alle |
--auth-type | none / bearer / apikey / cookie / basic | none |
--auth-value | Token, Cookie-String oder API-Schlüsselwert | — |
--auth-header | Header-Name für API-Schlüssel-Authentifizierung | X-API-Key |
--auth-user | Benutzername für Basic Auth | — |
--auth-pass | Passwort für Basic Auth | — |
--no-baseline | Basislinienvergleich deaktivieren | aus |
--no-rotate-ua | User-Agent-Rotation deaktivieren | aus |
--waf-header | X-WAF-Tester-Identifikationsheader senden | aus |
--output | terminal, json, html (kommagetrennt) | alle drei |
--output-dir | Verzeichnis zum Speichern der Berichtsdateien | . |
--timeout | Timeout pro Anfrage in Sekunden | 10 |
--proxy | Proxy-URL für alle Anfragen (z. B. http://127.0.0.1:8080) | aus |
--confirm | Die Autorisierungsbestätigungsaufforderung überspringen | aus |
# Run all suites
python waf_tester.py --url https://app.example.com
# Run OWASP and API suites only
python waf_tester.py --url https://app.example.com --suites owasp,api
# Bearer token auth
python waf_tester.py --url https://app.example.com/api \
--auth-type bearer --auth-value eyJhbGciOiJIUzI1NiJ9...
# API key auth
python waf_tester.py --url https://app.example.com/api \
--auth-type apikey --auth-header X-API-Key --auth-value mykey123
# Save reports to a folder, skip confirmation (CI/CD)
python waf_tester.py --url https://app.example.com \
--output-dir ./reports --confirm
# Terminal output only — no files saved
python waf_tester.py --url https://app.example.com --output terminal
# Route traffic through Burp Suite
python waf_tester.py --url https://app.example.com --proxy http://127.0.0.1:8080
docker run --rm -v $(pwd)/reports:/reports \
python:3.12-slim sh -c \
"pip install rich requests -q && python waf_tester.py \
--url https://target.example.com \
--output-dir /reports --confirm"
- name: WAF Evaluation
run: |
pip install rich requests
python waf_tester.py \
--url ${{ secrets.WAF_TARGET_URL }} \
--suites owasp,api,bypass \
--output json \
--output-dir ./reports \
--confirm
- name: Upload report
uses: actions/upload-artifact@v3
with:
name: waf-report
path: reports/
Die Python-CLI kann den gesamten Testverkehr durch Burp Suite leiten, sodass Sie einen vollständigen HTTP-Verlauf aller von WAF Tester gesendeten Payloads erhalten. Dies ist nützlich für die manuelle Inspektion von Anfragen und Antworten, das Feintuning von Payloads, die Fehlerbehebung bei unerwartetem WAF-Verhalten und die Verwendung von Burps eigenem Scanner oder Repeater für interessante Funde.
Burp Suite führt einen lokalen Proxy-Listener (Standard 127.0.0.1:8080). Wenn Sie die Proxy-Umgebungsvariablen von WAF Tester auf diese Adresse richten, wird jede vom Tool gesendete Anfrage über Burp geleitet, bevor sie das Ziel erreicht. Sie sehen jeden Payload im HTTP-Verlauf von Burp mit der vollständigen Anfrage und Antwort – Statuscode, Header, Body – genau so, wie die WAF sie gesehen hat.
1. Starten Sie Burp Suite und stellen Sie sicher, dass der Proxy-Listener aktiv ist:
Öffnen Sie Burp → Proxy → Proxy-Einstellungen → bestätigen Sie, dass der Listener auf 127.0.0.1:8080 läuft (oder notieren Sie sich Ihren Port, falls abweichend).
2. Exportieren Sie Burps CA-Zertifikat und vertrauen Sie ihm (einmalige Einrichtung):