ワンクリックで
waf-detect
Detect the presence and type of a Web Application Firewall using wafw00f or manual fingerprinting
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Detect the presence and type of a Web Application Firewall using wafw00f or manual fingerprinting
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Interactive gap analysis against Korea's ISMS-P 102-control certification framework (management, protection, personal information)
Security log analysis and anomaly detection for access, auth, and syslog files
Analyze suspicious files through triage/static/dynamic/code phases to produce IOCs, YARA/Sigma rules, and MITRE ATT&CK mappings
File hash reputation lookup via VirusTotal API v3 for MD5/SHA1/SHA256 detection ratio, threat classification, and vendor results
OWASP Top 10 (2021) checklist-based inspection and compliance matrix generation
Multi-chain smart contract security for Solana, Algorand, Cairo, Cosmos, Substrate, and TON with pre-audit readiness checks
| name | waf-detect |
| description | Detect the presence and type of a Web Application Firewall using wafw00f or manual fingerprinting |
| license | MIT |
| metadata | {"category":"web-security","locale":"en","phase":"v1"} |
Detects whether a WAF (Web Application Firewall) is present in front of a target URL using the wafw00f tool or manual curl fingerprinting, and identifies the specific WAF product — Cloudflare, AWS WAF, Akamai, F5 BIG-IP, and others.
wafw00f installation)curl required (manual fallback method)| Variable | Description | Example |
|---|---|---|
TARGET_URL | Target URL to test | https://example.com |
# Check for wafw00f and install if missing
if ! command -v wafw00f &>/dev/null; then
echo "wafw00f not found. Installing..."
pip install wafw00f --quiet
else
echo "wafw00f already installed: $(wafw00f --version 2>&1 | head -1)"
fi
TARGET_URL="https://example.com"
echo "=== wafw00f WAF detection ==="
wafw00f "$TARGET_URL" -a 2>&1
# -a : output all WAF candidates
echo ""
echo "=== Manual WAF fingerprinting (curl) ==="
# 1) Collect baseline headers with a normal request
echo "--- Normal request ---"
NORMAL=$(curl -s -I "$TARGET_URL" --max-time 10 2>&1)
echo "$NORMAL" | grep -iE "server:|x-powered-by:|cf-ray:|x-amz|x-cache|x-cdn|via:|x-sucuri|x-fw-|x-waf"
# 2) Send a malicious payload to trigger WAF response
echo ""
echo "--- Payload request (checking WAF reaction) ---"
ATTACK=$(curl -s -o /dev/null -w "%{http_code}" \
"$TARGET_URL/?q=<script>alert(1)</script>" \
--max-time 10 2>&1)
echo "XSS payload HTTP status: $ATTACK"
SQLI=$(curl -s -o /dev/null -w "%{http_code}" \
"$TARGET_URL/?id=1'+OR+'1'='1" \
--max-time 10 2>&1)
echo "SQLi payload HTTP status: $SQLI"
HEADERS_ATTACK=$(curl -s -I \
"$TARGET_URL/?q=<script>alert(1)</script>" \
--max-time 10 2>&1)
echo ""
echo "--- Payload request response headers ---"
echo "$HEADERS_ATTACK" | grep -iE "server:|cf-ray:|x-amz|x-cache|x-sucuri|x-iinfo:|x-check-cacheable:|x-fw-|set-cookie:"
Reference: See REFERENCE.md for the WAF fingerprint pattern table (6 WAF products with header signatures and block responses).
echo ""
echo "=== Detection summary ==="
echo "Normal response code: $(echo "$NORMAL" | grep "^HTTP" | awk '{print $2}')"
echo "XSS payload blocked: $ATTACK"
echo "SQLi payload blocked: $SQLI"
| Symptom | Cause and resolution |
|---|---|
| wafw00f installation fails | pip permission issue. Use pip install --user wafw00f or a virtual environment |
| All payloads return 200 | No WAF present or detection is being evaded. Try URL-encoded payload variants |
| 403 returned but no WAF headers | May be application-level blocking. Check the response body |
| IP blocked due to rate limiting | Throttle requests by adding sleep 2 between calls |
identYwaf (https://github.com/stamparm/identYwaf) is also useful for WAF bypass research.