工具介绍
攻击即防御 ------ 了解你的敌人,理解你的目标
WAFBypass 是一款高级Web应用防火墙(WAF)检测与绕过工具,旨在回答一个问题:"目标真的有WAF防护吗?" 它能够检测目标Web应用是否受到防火墙保护,并自动尝试寻找有效的绕过方法。
本项目在原 WhatWaf 的基础上进行了全面升级,新增了大量WAF检测插件、绕过脚本,并对核心引擎进行了现代化改造。

功能特性
- WAF检测 :支持检测 112+ 种Web应用防火墙和防护系统
- 自动绕过 :内置 61 种绕过脚本(Tamper Scripts)
- 多种输入方式:支持单URL、批量URL列表、Burp Suite导出文件、Googler JSON文件
- 多种输出格式:支持 JSON、YAML、CSV 格式化输出
- 数据库缓存:自动缓存检测结果,避免重复扫描
- 代理支持:支持 HTTP/HTTPS/SOCKS 代理和 Tor 网络
- 多线程扫描:支持并发请求,提高扫描效率
- 自定义Payload:支持自定义攻击载荷
- 指纹识别:支持保存和导出WAF指纹
- Web服务器识别:自动识别后端Web服务器类型
- POST请求支持:支持GET和POST两种请求方式
- 流量记录:支持将HTTP请求流量保存到文件
- HTML报告:生成专业级HTML渗透测试报告
- Payload分类:内置SQLi/XSS/XXE/SSTI/LFI/CMDi 6类攻击载荷库
- 配置文件:支持YAML配置文件,一键加载扫描设置
可检测的防火墙
WAFBypass 目前可以检测 112+ 种Web应用防护系统,包括但不限于:
| 类别 | 防火墙 |
|---|---|
| 云服务商 | CloudFlare, AWS WAF v2, Azure WAF, GCP Cloud Armor, Tencent Cloud WAF, Huawei Cloud WAF, Alibaba Cloud WAF |
| CDN/WAF | Akamai, CloudFront, Fastly, EdgeCast, Incapsula, Sucuri, StackPath |
| 企业级 | F5 BIG-IP/ASM, Fortinet FortiWeb, Citrix NetScaler, Barracuda, Radware, Imperva |
| 开源方案 | ModSecurity, NAXSI, OpenResty WAF, Shadow Daemon, Lua Resty WAF |
| 国内厂商 | 安全狗(SafeDog), 阿里云盾, 百度云加速, 创宇盾, 玄武盾, 安恒明御(DBapp), 深信服(Sangfor), 绿盟(NSFOCUS), 知道创宇(KnownSec), 奇安信(Qianxin), 山石(Hillstone), 启明星辰(Venustech), 天融信(TopSec), 火山引擎(Volcengine), 腾讯云WAF, 华为云WAF |
| 其他 | Wordfence, Wallarm, Reblaze, Signal Sciences, Cloudbric |
查看完整列表:
bash
wafbypass --wafs
可用的绕过脚本
WAFBypass 内置 61 种绕过脚本,涵盖以下技术:
| 类型 | 脚本示例 |
|---|---|
| 编码转换 | URL编码、双重/三重URL编码、Base64编码、Hex编码、HTML实体编码 |
| 字符混淆 | 大小写随机变换、Unicode规范化、UTF-8过长编码、逆序编码 |
| 空白字符 | 空格替换(Tab/Comment/+/NULL)、随机空白字符、Chunked传输编码 |
| SQL绕过 | SQL注释混淆、双SQL注释、数值操作转换、关键字拆分、参数碎片化 |
| XSS绕过 | HTML注释混淆、XSS向量变异、Script标签拆分 |
| HTTP层面 | HTTP参数污染(HPP)、CRLF注入、方法篡改、Content-Type操控 |
| Payload分片 | 智能参数分片、HPP多策略、Multipart表单分片、SQL注释分片、管道化请求、NULL字节分片、编码链分片 |
| 高级技巧 | JSON/XML编码、缓冲区溢出填充、嵌套编码、随机垃圾字符 |
查看完整列表:
bash
wafbypass --tampers
Payload分片绕过技术
WAFBypass v2.1 新增了强大的 Payload分片绕过 能力,将恶意Payload拆分为多个看似无害的片段,绕过基于单参数正则匹配的WAF规则:
| 分片策略 | 原理 | 适用场景 |
|---|---|---|
| HPP参数污染 | 将Payload拆分到同名参数的多个副本中,利用后端取最后一个值的特性 | PHP(Joomla/WordPress)、JSP、ASP.NET |
| 智能参数分片 | 按SQL关键字边界拆分,分配到不同参数名(q1,q2,q3...) | 支持参数合并的自定义应用 |
| Multipart分片 | 使用multipart/form-data边界将Payload隐藏在多个表单部分中 | 文件上传接口、REST API |
| SQL注释分片 | 在SQL关键字/字符间插入内联注释块(/**/),破坏关键字完整性匹配 | 基于正则的SQL注入防护 |
| 管道化请求 | 在前面附加无害的pipeline请求,利用WAF只检查第一个请求的弱点 | HTTP/1.1 Keep-Alive连接 |
| NULL字节分片 | 在字符/单词间插入NULL字节,利用C语言字符串终止截断WAF解析 | 基于C/C++的WAF引擎 |
| 编码链分片 | 将Payload不同部分使用不同编码(URL/Unicode/HTML实体),WAF难以统一解码 | 多层编码处理的WAF |
使用示例:
bash
# 使用HPP分片绕过
python wafbypass -u "https://target.com/?id=1" -p "' UNION SELECT NULL--" -e "' UNION SELECT NULL--" content.tampers.hpp_split
# 组合多种分片策略
python wafbypass -u "https://target.com/?q=test" -p "' UNION SELECT NULL--" \
-e "' UNION SELECT NULL--" content.tampers.param_fragment content.tampers.null_byte_fragment content.tampers.sql_comment_fragment
使用方法
基本用法
bash
# 检测单个URL的WAF
python wafbypass -u https://example.com/index.php?id=1
# 从文件批量检测
python wafbypass -l targets.txt
# 使用自定义Payload
python wafbypass -u https://example.com/?q=1 -p "' OR 1=1--,<script>alert(1)</script>"
# 跳过绕过检测,仅识别防火墙
python wafbypass -u https://example.com/ --skip
高级用法
bash
# 使用代理
python wafbypass -u https://example.com/ --proxy socks5://127.0.0.1:1080
# 使用Tor
python wafbypass -u https://example.com/ --tor
# 多线程扫描
python wafbypass -l targets.txt -t 10
# 输出JSON格式结果
python wafbypass -u https://example.com/ -F -J
# 编码Payload
python wafbypass -e "' UNION SELECT NULL--" content.tampers.base64encode
# 保存流量日志
python wafbypass -u https://example.com/ --traffic traffic.log
工具下载
https://github.com/hnytgl/wafbypass