
🛡️ 고성능 WAF 및 CDN 탐지 도구. 보호 계층(Cloudflare, Akamai, AWS, Fastly 등)을 식별하고, 우회 페이로드로 효과성 및 적용 테스트를 실행하며, 보안 태세 보고서를 생성합니다. Rust로 제작되었습니다 🦀.
WAF(Web Application Firewall) 및 CDN(Content Delivery Network)을 탐지, 테스트, 프로파일링하기 위한 CLI 도구입니다.
중요: 본인이 소유하거나 명시적인 테스트 권한을 보유한 시스템만 테스트하십시오.
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> |
| 행위 분석 | 5개 채널에 걸쳐 WAF 정교함을 테스트하는 쌍 프로브 | --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
헤더, 본문, DNS, TLS, 타이밍을 통해 WAF/CDN을 식별합니다. 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 — 요청이 오리진까지 통과함ERROR — 비차단 실패(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로 내보내기5개 HTTP 채널에 걸쳐 쌍 프로브(하나는 정상, 하나는 악성)를 전송하여 WAF 정교함을 테스트합니다. 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 챌린지를 발행하는가? |
테스트되는 채널: 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 라이선스에 정의된 대로 귀하가 의도적으로 작업에 포함시키기 위해 제출한 모든 기여는 추가 약관이나 조건 없이 위와 같이 이중 라이선스가 적용됩니다.
| 모드 | 명령어 |
|---|
| 탐지 | 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> |
| 오리진 프로브 | waf-detect origin-probe <url> --json |
| HTML 보고서 | waf-detect report <file.json> -o <file.html> |
| 속도 제한 | WAF가 빠른 요청을 제한하는가? |
| 공격 인식 | WAF가 공격 프로브와 정상 요청을 구분하는가? |