
🛡️ Высокопроизводительный инструмент обнаружения WAF и CDN. Определяйте уровни защиты (Cloudflare, Akamai, AWS, Fastly и другие), запускайте тесты эффективности и принудительного применения с полезными нагрузками для обхода и создавайте отчёты о защищённости. Написан на Rust 🦀.
CLI-инструмент для обнаружения, тестирования и профилирования Web Application Firewall (WAF) и Content Delivery Network (CDN).
Важно: Тестируйте только те системы, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
Для AI-агентов программирования: См. AGENTS.md для сопоставления навыков и указателей по рабочим процессам. Используйте agent-skills/waf-assess/WORKFLOW.md для полных оценок; используйте agent-skills/validate-build/WORKFLOW.md перед слиянием.
| Режим | Что тестирует | Флаг |
|---|
| Обнаружение | Определяет, какой WAF/CDN защищает цель | waf-detect <url> |
| Дымовой тест | Отправляет известные атакующие полезные нагрузки, измеряет долю блокировок | --smoke-test <url> |
| Тест принудительного применения | Отправляет категоризированные атакующие пробы, измеряет блокировку/вызов/пропуск | --va <url> |
| Поведенческий анализ | Парные пробы, тестирующие сложность WAF по 5 каналам | --va2 <url> --va2-run |
| Отчёт о состоянии защиты | Единая оценка (A-F), объединяющая все результаты тестов | --posture <url> |
| HTML-отчёт | Преобразует сохранённые JSON-результаты в общий статический отчёт | 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
| Режим | Команда |
|---|---|
| Обнаружение | waf-detect scan <url> или waf-detect <url> |
| Упрочнение | waf-detect hardening <url> --output file.json |
| Дымовой тест | waf-detect --smoke-test <url> |
| Принудительное применение | waf-detect va <url> |
| Поведенческий | waf-detect va2 <url> --run |
| Состояние защиты | waf-detect --posture <url> |
| Эффективность | waf-detect --effectiveness <url> |
| Проба origin | waf-detect origin-probe <url> --json |
| HTML-отчёт | waf-detect report <file.json> -o <file.html> |
Определяет WAF/CDN по заголовкам, телу, DNS, TLS и таймингам. 12 провайдеров: CloudFlare, AWS, Akamai, Fastly, Vercel, Azure, F5, Imperva, ModSecurity, Sucuri, Radware, FortiWeb.
waf-detect scan example.com --json
waf-detect scan @urls.txt --ndjson
Отправляет известные атакующие полезные нагрузки и измеряет, что WAF блокирует, вызывает или пропускает. Активное дымовое тестирование выполняется только против зарегистрированных принадлежащих вам целей.
./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
Тестируемые категории атак: SQL-инъекции (базовые + продвинутые), XSS (базовые + продвинутые), инъекция команд, обход пути, SSTI, SSRF, Log4Shell, загрузка файлов, обнаружение сканеров, инъекция GraphQL, контрабанда HTTP-запросов, загрязнение прототипа, инъекция WebSocket, перечисление.
Классификации результатов:
BLOCKED — WAF заблокировал запрос (обычно 403)CHALLENGE — Сработала защита от ботов (JS-вызов, CAPTCHA)ALLOWED — Запрос прошёл к originERROR — Неблокирующая ошибка (404, 500, тайм-аут)Отправляет категоризированные атакующие пробы и измеряет доли блокировки/вызова/пропуска с оценкой достоверности. Требует зарегистрированной области целей.
# 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
Опции:
--va-tier 1|2|3 — Уровень безопасности (1 = самый безопасный)--va-budget N — Максимум запросов за запуск (по умолчанию: 120)--va-timeout SECONDS — Тайм-аут на запрос (по умолчанию: 15)--va-delay MS — Задержка между запросами (по умолчанию: 750)--va-variants N — Вариантов на шаблон полезной нагрузки (по умолчанию: 4)--va-replay — Экспорт плана воспроизведения в JSON--va-replay-csv — Экспорт плана воспроизведения в CSVТестирует сложность WAF, отправляя парные пробы — одну безвредную, одну вредоносную — по 5 HTTP-каналам. Измеряет, обрабатывает ли WAF их по-разному.
# 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
Что он измеряет:
| Сигнал | Что тестирует |
|---|---|
| Защита кодирования | Нормализует ли WAF закодированные пути перед сопоставлением? |
| Отслеживание сессий | Отслеживает ли WAF состояние сессии и усиливает защиту при повторных злоупотреблениях? |
| Вызов бота | Выдаёт ли WAF CAPTCHA или JS-вызовы? |
| Ограничение скорости | Ограничивает ли WAF частые запросы? |
| Распознавание атак | Отличает ли WAF атакующие пробы от безвредных запросов? |
Тестируемые каналы: Path, Query, Header, Body, Method. Каналы с 0% обнаружения атак помечаются как незащищённые.
Опции:
--va2-phases LIST — Фазы для запуска (через запятую)--va2-seed N — Детерминированное зерно для воспроизводимых результатов (по умолчанию: 1337)--va2-budget N — Бюджет запросов (по умолчанию: 60)--va2-json — Выводить план/отчёт в формате JSONГенерирует единую оценку безопасности (A-F) и показатель риска (0-100), объединяя достоверность обнаружения, результаты принудительного применения и поведенческий анализ.
# 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
Шкала оценок:
Преобразует сохранённый JSON-артефакт сканирования в статический HTML-отчёт, который легко просмотреть локально и передать другим инженерам.
# 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
Сгенерированный HTML является статическим и самодостаточным, поэтому его можно прикрепить к тикетам, поделиться в чате или открыть локально без повторного запуска сканирования.
Дымовой тест, анализ полезных нагрузок, принудительное применение, поведенческий анализ и тестирование эффективности требуют зарегистрированных принадлежащих вам целей.
# 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
Показатели риска (отчёт о состоянии защиты):
Типичные выводы:
# 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
Опции вывода: --json / --ndjson / --compact / --yaml · waf-detect providers · waf-detect doctor
cargo test --lib
cargo clippy -- -D warnings
cargo fmt
См. DEVELOPMENT.md для полной информации.
Лицензировано под одной из
на ваш выбор.
Если вы явно не заявите иное, любой вклад, намеренно представленный вами для включения в работу, как определено в лицензии Apache-2.0, будет двойным лицензированием, как указано выше, без каких-либо дополнительных условий.