WAF 绕过工具是一款开源工具,可使用预定义和可自定义的有效负载分析任何 WAF 的安全性,以查找误报和漏报。在攻击者之前检查您的 WAF。WAF 绕过工具由 Nemesida WAF 团队在社区的参与下开发。
如何运行
禁止用于非法及违法用途,请勿触犯法律。我们不对使用本软件可能存在的风险负责。
使用 Docker 运行
最新的 waf-bypass 始终可通过Docker Hub获得。可通过以下命令轻松获取:
#docker pull nemesida/waf-bypass
#docker run nemesida/waf-bypass --host='example.com'
使用 pipx 运行
# pipx install git+https://github.com/nemesida-waf/waf-bypass.git
# <pipx bin dir>/waf-bypass
使用 CLI 直接从源代码运行
# git clone https://github.com/nemesida-waf/waf_bypass.git /opt/waf-bypass/
# python3 -m pip install -r /opt/waf-bypass/requirements.txt
# python3 /opt/waf-bypass/main.py --host='example.com'
选项
'--proxy'()- 选项允许指定要连接的位置而不是主机。--proxy='http://proxy.example.com:3128'
'--header'(--header 'Authorization: Basic YWRtaW46YWRtaW4=' --header 'X-TOKEN: ABCDEF')- 选项允许指定随所有请求一起发送的 HTTP 标头(例如用于身份验证)。允许多次使用。
'--user-agent'(--user-agent 'MyUserAgent 1/1')——选项允许指定与所有请求一起发送的 HTTP 用户代理,除非用户代理由有效负载设置("USER-AGENT")。
'--block-code'(--block-code='403' --block-code='222') - 选项允许您指定 WAF 被阻止时预期的 HTTP 状态代码。(默认值为403)。允许多次使用。
'--threads'(--threads=15)-选项允许指定并行扫描线程的数量(默认为10)。
'--timeout'(--timeout=10)——选项允许指定请求处理超时时间(以秒为单位)(默认为30)。
'--exclude-dir' – 排除有效载荷的目录(--exclude-dir='SQLi,XSS')。
'--json-format'- 一个选项,允许您以 JSON 格式显示工作结果(对于将工具与安全平台集成很有用)。如果未指定该选项,则输出将采用表格格式(默认格式)。
'--details'- 显示误报和误报负载。与选项不兼容--json-format。
'--curl-replay'- 显示 cURL 命令以重现误报、误报或失败的请求。与选项--json-format 选项不兼容。
JSON 格式
JSON输出规范示例:
{
"TARGET": "https://example.com", // defined by --host option
"PROXY": {}, // defined by --proxy option
"HEADERS": { // defined by --header option
"User-Agent": ""
},
"BLOCK-CODE": [ // defined by --block-code option
...
],
"THREADS": 50, // defined by --threads option
"TIMEOUT": 30, // defined by --timeout option
"EXCLUDE-DIR": [ // defined by --exclude-dir option
...
],
"FAILED": { // requests with failed processing status
"MFD/7.json": {
"BODY": "WBHTTPSConnectionPool(host='example.com', port=443): Read timed out. (read timeout=1)"
},
...
},
"PASSED": { // passed requests
"UWA/3.json": {
"URL": "403 RESPONSE CODE"
},
...
},
"FALSED": { // requests with false positive processing status
...
},
"BYPASSED": { // requests with false negative processing status
"UWA/26.json": {
"URL": "200 RESPONSE CODE"
},
...
},
"TestRequest": { // test requests with processing status, exclude passed
"FAILED": {},
"FALSED": {
"UWA/3.json": {
"URL": "403 RESPONSE CODE"
},
...
}
},
"CURL": { // cURL command to reproduce false positive and false negative requests
"FALSED": {},
"BYPASSED": {
"UWA/26.json": {
"URL": "curl -X GET -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' 'https://example.com/do.php#.png'"
},
...
}
}
}
有效载荷
根据目的,有效载荷位于适当的文件夹中:
FP - 误报载荷
API - API 测试有效载荷
CM - 自定义 HTTP 方法负载
GraphQL - GraphQL 测试有效载荷
LDAP - LDAP 注入负载
LFI——本地文件包含有效载荷
MFD - 多部分/表单数据有效载荷
NoSQLi - NoSQL 注入负载
或 - 打开重定向有效载荷
RCE——远程代码执行载荷
RFI - 远程文件包含负载
SQLi - SQL 注入负载
SSI - 服务器端包含有效载荷
SSRF - 服务器端请求伪造负载
SSTI——服务器端模板注入负载
UWA——不需要的访问有效载荷
XSS - 跨站点脚本攻击
编写自己的有效载荷
编译有效载荷时,使用以下区域、方法和选项:
URL——请求的路径
ARGS - 请求的查询
BODY——请求主体
COOKIE——请求的 cookie
USER-AGENT - 请求的用户代理
REFERER - 请求的引荐来源
HEADER-请求的标头
METHOD - 请求的方法
BOUNDARY - 指定请求边界的内容。仅适用于 MFD 目录中的有效负载。
ENCODE -除了指定有效载荷的编码外,还指定有效载荷编码的类型( 、 、 )。多个值用空格表示(例如)。仅适用于 、 和zone Base64。HTML-ENTITY不适用于API和MFD 目录中的有效载荷。与选项 不兼容。UTF-16Base64 UTF-16ARGSBODYCOOKIEHEADERJSON
JSON - 指定请求主体应采用 JSON 格式
BLOCKED - 指定请求是否应该被阻止(FN 测试)或不被阻止(FP)
除了下面描述的某些情况外,区域彼此独立并单独进行测试(如果指定了 2 个区域 - 脚本将发送 2 个请求 - 交替检查一个区域和第二个区域)。
对于区域,您可以使用 %RND% 后缀,它允许您生成由 6 个字母和数字组成的任意字符串。(例如:param%RND=my_payload 或 param=%RND% OR A%RND%B)
您可以创建自己的有效载荷,为此,请在“/payload/”文件夹中创建自己的文件夹,或将有效载荷放在现有文件夹中(例如:“/payload/XSS”)。允许的数据格式为 JSON。
API 目录
位于此目录中的 API 测试有效负载会自动附加一个标头'Content-Type: application/json'。
MFD 目录
对于位于此目录中的 MFD (multipart/form-data) 有效负载,您必须指定BODY(必需) 和 BOUNDARY (可选)。如果 BOUNDARY 未设置,它将自动生成(在这种情况下,只需为 BODY 指定有效负载,而无需其他数据 ( '... Content-Disposition: form-data; ...')。
如果BOUNDARY指定了,则的内容BODY必须根据 RFC 进行格式化,但这允许在BODY中用 分隔的多个有效载荷BOUNDARY。
此目录允许其他区域(例如:URL等ARGS)。无论区域如何,'Content-Type: multipart/form-data; boundary=...'所有请求都会添加标头。
https://github.com/nemesida-waf/waf-bypass#how-to-run
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...