
🛡️ Ferramenta de detecção de WAF e CDN de alto desempenho. Identifique camadas de proteção (Cloudflare, Akamai, AWS, Fastly e mais), execute testes de eficácia e aplicação com payloads de evasão, e gere relatórios de postura. Construída em Rust 🦀.
Ferramenta de linha de comando para detectar, testar e traçar o perfil de Web Application Firewalls (WAFs) e Content Delivery Networks (CDNs).
Importante: Teste apenas sistemas que você possui ou tem autorização explícita para testar.
Para agentes de codificação com IA: Consulte AGENTS.md para mapeamento de habilidades e ponteiros de fluxo de trabalho. Use agent-skills/waf-assess/WORKFLOW.md para avaliações completas; use agent-skills/validate-build/WORKFLOW.md antes do merge.
| Modo | O que testa | Flag |
|---|
| Detecção | Identifica qual WAF/CDN protege um alvo | waf-detect <url> |
| Smoke Test | Envia payloads de ataque conhecidos, mede taxas de bloqueio | --smoke-test <url> |
| Teste de Aplicação | Envia sondas de ataque categorizadas, mede bloqueio/desafio/permissão | --va <url> |
| Análise Comportamental | Sondas emparelhadas testando a sofisticação do WAF em 5 canais | --va2 <url> --va2-run |
| Relatório de Postura | Nota unificada (A-F) combinando todos os resultados de teste | --posture <url> |
| Relatório HTML | Renderiza resultados JSON salvos em um relatório estático compartilhável | 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 |
|---|---|
| Detecção | waf-detect scan <url> ou waf-detect <url> |
| Hardening | waf-detect hardening <url> --output file.json |
| Smoke test | waf-detect --smoke-test <url> |
| Aplicação | waf-detect va <url> |
| Comportamental | waf-detect va2 <url> --run |
| Postura | waf-detect --posture <url> |
| Efetividade | waf-detect --effectiveness <url> |
| Sonda de origem | waf-detect origin-probe <url> --json |
| Relatório HTML | waf-detect report <file.json> -o <file.html> |
Identifica WAF/CDN via cabeçalhos, corpo, DNS, TLS e timing. 12 provedores: CloudFlare, AWS, Akamai, Fastly, Vercel, Azure, F5, Imperva, ModSecurity, Sucuri, Radware, FortiWeb.
waf-detect scan example.com --json
waf-detect scan @urls.txt --ndjson
Envia payloads de ataque conhecidos e mede o que o WAF bloqueia, desafia ou permite passar. O smoke test ativo só é executado contra alvos próprios registrados.
./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
Categorias de ataque testadas: Injeção SQL (básica + avançada), XSS (básico + avançado), injeção de comando, path traversal, SSTI, SSRF, Log4Shell, upload de arquivo, detecção de scanner, injeção GraphQL, contrabando de requisição HTTP, poluição de protótipo, injeção WebSocket, enumeração.
Classificações de resultado:
BLOCKED — WAF bloqueou a requisição (tipicamente 403)CHALLENGE — Proteção contra bots acionada (desafio JS, CAPTCHA)ALLOWED — Requisição passou para a origemERROR — Falha não bloqueante (404, 500, timeout)Envia sondas de ataque categorizadas e mede taxas de bloqueio/desafio/permissão com pontuação de confiança. Requer escopo de alvo 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
Opções:
--va-tier 1|2|3 — Nível de segurança (1 = mais seguro)--va-budget N — Máximo de requisições por execução (padrão: 120)--va-timeout SECONDS — Timeout por requisição (padrão: 15)--va-delay MS — Atraso entre requisições (padrão: 750)--va-variants N — Variantes por template de payload (padrão: 4)--va-replay — Exportar plano de replay como JSON--va-replay-csv — Exportar plano de replay como CSVTesta a sofisticação do WAF enviando sondas emparelhadas — uma benigna, uma maliciosa — em 5 canais HTTP. Mede se o WAF as trata de forma 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
O que mede:
| Sinal | O que testa |
|---|---|
| Defesa de Codificação | O WAF normaliza caminhos codificados antes da correspondência? |
| Rastreamento de Sessão | O WAF rastreia o estado da sessão e escala em abuso repetido? |
| Desafio de Bot | O WAF emite CAPTCHA ou desafios JS? |
| Limitação de Taxa | O WAF limita requisições rápidas? |
| Reconhecimento de Ataque | O WAF distingue sondas de ataque de requisições benignas? |
Canais testados: Path, Query, Header, Body, Method. Canais com 0% de detecção de ataque são sinalizados como desprotegidos.
Opções:
--va2-phases LIST — Fases a executar (separadas por vírgula)--va2-seed N — Semente determinística para resultados reproduzíveis (padrão: 1337)--va2-budget N — Orçamento de requisições (padrão: 60)--va2-json — Imprimir plano/relatório como JSONGera uma nota de segurança unificada (A-F) e pontuação de risco (0-100) combinando confiança de detecção, resultados de aplicação e análise comportamental.
# 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 notas:
Renderiza um artefato de varredura JSON salvo em um relatório HTML estático que é fácil de revisar localmente e compartilhar com outros engenheiros.
# 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
O HTML gerado é estático e autocontido, portanto pode ser anexado a tickets, compartilhado em chat ou aberto localmente sem reexecutar a varredura.
Smoke test, análise de payload, aplicação, análise comportamental e teste de efetividade requerem alvos próprios registrados.
# 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
Pontuações de risco (relatório de postura):
Descobertas comuns:
# 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
Opções de saída: --json / --ndjson / --compact / --yaml · waf-detect providers · waf-detect doctor
cargo test --lib
cargo clippy -- -D warnings
cargo fmt
Consulte DEVELOPMENT.md para detalhes completos.
Licenciado sob qualquer uma das
à sua escolha.
A menos que você declare explicitamente o contrário, qualquer contribuição intencionalmente submetida para inclusão no trabalho por você, conforme definido na licença Apache-2.0, será licenciada duplamente como acima, sem quaisquer termos ou condições adicionais.