推荐|自动绕过waf工具
2023-5-17 00:3:1 Author: 橘猫学安全(查看原文) 阅读量:23 收藏

xwaf

xwaf是一个python3写的waf自动绕过工具,上一个版本是bypass_waf,xwaf相比bypass_waf更智能,可无人干预,可自动暴破过waf

功能特点

  1. xwaf支持记忆,运行中断后下次继续运行时会在中断时的最后一个命令附近继续跑,不会重新经历上面的所有函数的处理

  2. xwaf支持sqlmap除-m/-l外的所有参数用法

  3. 各个get_xxx_need_tamper函数的处理采用针对当前url的数据库类型(eg.MySQL)的所有过waf的脚本 (在sqlmap的tamper目录中)的排列组合的结果与--hex或--no-cast选项进行暴力破解如果--hex起作用了则不再使用 --no-cast尝试,--no-cast起作用了也不再用--hex尝试

  4. xwaf运行完后将在/root/.sqlmap/output/127.0.0.1目录下的ini文件中看到相关信息,bypassed_command是成功暴破 waf的sqlmap语句

  5. 在tamper组合中,先用到的tamper会加入到上面的ini文件中,在以后的每个tamper组合中,综合已经得到的有用的 tamper再组合,在上面的ini文件中的tamper_list即为不断完善的tamper组合

  6. 支持自动更新升级

xwaf安装

依赖支持

python3pip3mysqllinux(test on ubuntu and kali2.0,others should based on debain)
$ git clone https://github.com/3xp10it/bypass_waf.git

xwaf使用

demo

python3 xwaf.py -u "http://www.site.com/1.php?id=1"python3 xwaf.py -u "http://www.site.com/1.php" --data="postdata" -p xxxpython3 xwaf.py -r /tmp/headerfile -p xxx --risk 3 --level 5

使用注意

  1. xwaf支持除-m/-l外的所有sqlmap参数,用法和sqlmap一样即可,-m/-l为批量功能,暂不支持,如果需要批量,请自行code实现

  2. 由于xwaf已经有比较好的参数方案,一般情况下尽量少用参数,如果有必须要用的参数除外[如--data/-p/-r等参数]

  3. 普通get类型注入点,这样用即可: python3 xwaf.py -u "http://www.baidu.com/1.php?id=1&page=2" -p id

  4. 人工输入的参数的优先级大于xwaf自带的参数方案

  5. 关于--tamper参数的使用: xwaf的主要功能是排列组合使用所有可能的tamper组合来爆破waf,如果人为使用了--tamper参数,xwaf将在人为设置的已有 tamper基础上再排列组合,eg.人为使用的命令为: python3 xwaf.py -u "http://www.baidu.com/1.php?id=1" --tamper=space2comment 那么xwaf使用的tamper方案中的每个都会有space2comment

  6. 关于代理的使用: a)xwaf默认不用代理,如果使用代理需要在xwaf运行后选择y|Y b)使用的代理来源于程序自动收集的网上的代理 c)使用代理有防封的优点,但网络连接速度不一定能保证

  7. 需要python3

以[127.0.0.1/1.php?id=1为例]
1.start2.检测系统/root/.sqlmap/output/127.0.0.1/log文件是否存在3.获取log文件: 如果不存在log文件则调用get_log_file_need_tamper函数,执行完这个函数后获得log文件,也即成功检测出目标 url有sqli注入漏洞,如果执行完get_log_file_need_tamper函数没有获得log文件则认为该url没有sqli漏洞4.获取db_type[数据库类型] 调用get_db_type_need_tamper函数,用于后面的tamper排列组合时,只将目标url对应的数据库类型的tamper用于 该目标在sql注入时tamper的选择后的组合5.获取sqli_type[注入方法] 调用get_good_sqli_type_need_tamper函数,sql注入方法中一共有U|S|E+B|Q|T 6种注入方法,后3种查询效率低, 首先在log文件中查找是否有U|S|E这3种高效方法中的任意一种,如果有略过这一步,否则执行 get_good_sqli_type_need_tamper函数,执行该函数将尝试获得一种以上的高效注入方法6.获取current-db[当前数据库名] 如果上面获得了高效注入方法,则先用高效注入方法获得current-db,如果没有则用B|Q|T方法尝试获得 current-db,用来尝试获得current-db的函数是get_db_name_need_tamper7.获取table[当前数据库的表名] 如果上面获得了高效注入方法,则先用高效注入方法获得table,如果没有则用B|Q|T方法尝试获得table,尝试获得 table的函数是get_table_name_need_tamper8.获取column[当前数据库的第一个表的所有列名] 如果上面获得了高效注入方法,则先用高效注入方法获得column,如果没有则用B|Q|T方法获得column,尝试获得 column的函数是get_column_name_need_tamper9.获取entries[column对应的真实数据] 调用get_entries_need_tamper函数,执行完get_entries_need_tamper函数后,waf成功绕过,从上面的步骤一直到 这个步骤,逐步获得最佳绕过waf的脚本组合

对有过waf需求的同学可以试试。

原文:https://github.com/3xp10it/xwaf
如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell
「 超详细 | 分享 」手把手教你如何进行内网渗透
神兵利器 | siusiu-渗透工具管理套件
一款功能全面的XSS扫描器
实战 | 一次利用哥斯拉马绕过宝塔waf
BurpCrypto: 万能网站密码爆破测试工具
快速筛选真实IP并整理为C段 -- 棱眼
自动探测端口顺便爆破工具t14m4t
渗透工具|无状态子域名爆破工具(1秒扫160万个子域)
查看更多精彩内容,还请关注橘猫学安全:
每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“再看

文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5OTY2NjUxMw==&mid=2247507917&idx=1&sn=9470ec7427f844900b2bbe8251b4b275&chksm=c04d58f3f73ad1e57196a734bd211e58b145947e4dbae1504443d5e3d8a37ecbf583318767f6#rd
如有侵权请联系:admin#unsafe.sh