🛡️ Herramienta de detección de WAF y CDN de alto rendimiento. Identifica capas de protección (Cloudflare, Akamai, AWS, Fastly y más), ejecuta pruebas de efectividad y aplicación con payloads de evasión, y genera informes de postura. Construida en Rust 🦀.
Herramienta CLI para detectar, probar y perfilar Web Application Firewalls (WAFs) y Content Delivery Networks (CDNs).
Importante: Solo pruebe sistemas que posea o para los que tenga autorización explícita de prueba.
Para agentes de codificación con IA: Consulte AGENTS.md para el mapeo de habilidades y las indicaciones de flujo de trabajo. Use agent-skills/waf-assess/WORKFLOW.md para evaluaciones completas; use agent-skills/validate-build/WORKFLOW.md antes de fusionar.
| Modo | Qué prueba | Flag |
|---|
| Detección | Identifica qué WAF/CDN protege un objetivo | waf-detect <url> |
| Prueba de humo | Envía payloads de ataque conocidos, mide las tasas de bloqueo | --smoke-test <url> |
| Prueba de aplicación | Envía sondas de ataque categorizadas, mide bloqueo/desafío/permitido | --va <url> |
| Análisis de comportamiento | Sondas emparejadas que prueban la sofisticación del WAF en 5 canales | --va2 <url> --va2-run |
| Informe de postura | Calificación unificada (A-F) que combina todos los resultados de las pruebas | --posture <url> |
| Informe HTML | Renderiza los resultados JSON guardados en un informe estático compartible | 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
| Modo | Comando |
|---|---|
| Detección | waf-detect scan <url> o waf-detect <url> |
| Hardening | waf-detect hardening <url> --output file.json |
| Prueba de humo | waf-detect --smoke-test <url> |
| Aplicación | waf-detect va <url> |
| Comportamiento | waf-detect va2 <url> --run |
| Postura | waf-detect --posture <url> |
| Efectividad | waf-detect --effectiveness <url> |
| Sonda de origen | waf-detect origin-probe <url> --json |
| Informe HTML | waf-detect report <file.json> -o <file.html> |
Identifica WAF/CDN mediante encabezados, cuerpo, DNS, TLS y temporización. 12 proveedores: CloudFlare, AWS, Akamai, Fastly, Vercel, Azure, F5, Imperva, ModSecurity, Sucuri, Radware, FortiWeb.
waf-detect scan example.com --json
waf-detect scan @urls.txt --ndjson
Envía payloads de ataque conocidos y mide qué bloquea, desafía o permite pasar el WAF. Las pruebas de humo activas solo se ejecutan contra objetivos registrados como propios.
./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
Categorías de ataque probadas: inyección SQL (básica + avanzada), XSS (básico + avanzado), inyección de comandos, path traversal, SSTI, SSRF, Log4Shell, carga de archivos, detección de escáneres, inyección GraphQL, contrabando de solicitudes HTTP, contaminación de prototipos, inyección WebSocket, enumeración.
Clasificaciones de resultados:
BLOCKED — El WAF bloqueó la solicitud (típicamente 403)CHALLENGE — Se activó la protección contra bots (desafío JS, CAPTCHA)ALLOWED — La solicitud pasó al origenERROR — Fallo no bloqueante (404, 500, tiempo de espera)Envía sondas de ataque categorizadas y mide las tasas de bloqueo/desafío/permitido con puntuación de confianza. Requiere un alcance de objetivo registrado.
# 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
Opciones:
--va-tier 1|2|3 — Nivel de seguridad (1 = más seguro)--va-budget N — Máximo de solicitudes por ejecución (predeterminado: 120)--va-timeout SECONDS — Tiempo de espera por solicitud (predeterminado: 15)--va-delay MS — Retardo entre solicitudes (predeterminado: 750)--va-variants N — Variantes por plantilla de payload (predeterminado: 4)--va-replay — Exportar plan de repetición como JSON--va-replay-csv — Exportar plan de repetición como CSVPrueba la sofisticación del WAF enviando sondas emparejadas — una benigna, una maliciosa — a través de 5 canales HTTP. Mide si el WAF las trata de manera diferente.
# 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
Qué mide:
| Señal | Qué prueba |
|---|---|
| Defensa de codificación | ¿El WAF normaliza las rutas codificadas antes de compararlas? |
| Seguimiento de sesión | ¿El WAF rastrea el estado de la sesión y escala ante abuso repetido? |
| Desafío de bots | ¿El WAF emite CAPTCHA o desafíos JS? |
| Limitación de velocidad | ¿El WAF limita las solicitudes rápidas? |
| Reconocimiento de ataques | ¿El WAF distingue las sondas de ataque de las solicitudes benignas? |
Canales probados: Path, Query, Header, Body, Method. Los canales con 0% de detección de ataques se marcan como no protegidos.
Opciones:
--va2-phases LIST — Fases a ejecutar (separadas por comas)--va2-seed N — Semilla determinista para resultados reproducibles (predeterminado: 1337)--va2-budget N — Presupuesto de solicitudes (predeterminado: 60)--va2-json — Imprimir plan/informe como JSONGenera una calificación de seguridad unificada (A-F) y una puntuación de riesgo (0-100) que combina la confianza de detección, los resultados de aplicación y el análisis de comportamiento.
# 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
Escala de calificación:
Renderiza un artefacto de escaneo JSON guardado en un informe HTML estático que es fácil de revisar localmente y compartir con otros ingenieros.
# 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
El HTML generado es estático y autocontenido, por lo que se puede adjuntar a tickets, compartir en el chat o abrir localmente sin volver a ejecutar el escaneo.
La prueba de humo, el análisis de payloads, la aplicación, el análisis de comportamiento y las pruebas de efectividad requieren objetivos registrados como propios.
# 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
Puntuaciones de riesgo (informe de postura):
Hallazgos comunes:
# 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
Opciones de salida: --json / --ndjson / --compact / --yaml · waf-detect providers · waf-detect doctor
cargo test --lib
cargo clippy -- -D warnings
cargo fmt
Consulte DEVELOPMENT.md para obtener todos los detalles.
Con licencia bajo cualquiera de las siguientes
a su elección.
A menos que usted indique explícitamente lo contrario, cualquier contribución enviada intencionalmente para su inclusión en el trabajo por usted, según se define en la licencia Apache-2.0, tendrá la doble licencia anterior, sin términos ni condiciones adicionales.