漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0121291
漏洞标题:一次艰难的安全狗规则绕过
相关厂商:安全狗
漏洞作者: MayIKissYou
提交时间:2015-06-18 08:53
修复时间:2015-09-16 10:16
公开时间:2015-09-16 10:16
漏洞类型:设计错误/逻辑缺陷
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-06-18: 细节已通知厂商并且等待厂商处理中
2015-06-18: 厂商已经确认,细节仅向厂商公开
2015-06-21: 细节向第三方安全合作伙伴开放
2015-08-12: 细节向核心白帽子及相关领域专家公开
2015-08-22: 细节向普通白帽子公开
2015-09-01: 细节向实习白帽子公开
2015-09-16: 细节向公众公开
简要描述:
估计下面评论又要开始诅咒了。。。。。
详细说明:
1:篇前先附送一个sql注入绕过,字符是%a0,这个字符之前是修正果的,我记得上个版本有两个字符没有过滤的,估计是redfree同学上报了之后,给修复了,但是竟然修复之后的规则还带回滚的,现在又支持%a0的绕过了。
就不去刷rank了。
这个不细说了,进入正文。
2:测试的安全狗的版本是
这个应该是最新的版本,今天刚在官网上下载的
3:本机的测试环境是:
操作系统:win7
应用环境:wamp
安全狗:windows apache版本
因此这里也是针对的是主流的mysql环境
做绕过的时候可以利用各个层面的特性去绕过,
这次测试绕过的方向主要是通过mysql的特性去做绕过。
下面来看这个艰难的过程。
4:测试sql注入规则绕过的时候,我一般都会先去测试 []select[][]from[]这个点的规则
经过大量的反复的测试,这里我们得到如下的结果:
除开%a0以外,基本上在安全狗的环境下:
上面方括号代表位置1-4
1):位置1允许a-z,A-Z以及_和数字
2):位置2允许a-z,A-Z以及_和数字
3):位置3允许a-z,A-Z以及_
4):位置4允许a-z,A-Z以及_和数字
5:知晓各个点的过滤情况之后接下来就是在脑[wen]海[dang]里翻阅资料,翻阅到之前的那个精华帖子
里面使用了一个字符引起了注意:
这里这个\N的字符能用在union这,能不能用在\Nfrom前面呢,如果能用在from前面可能我们就能够绕过select from的检测
6:在mysql console下进行测试发现:
7:因此这里我们便可以使用这样的payload绕过select from的检测
8:我们的目的是要能绕过安全狗防护爆出数据,本来以为可以直接就爆出数据,但是在测试的过程中又发现了一些问题。
分析:
由于我们做数据读取的时候,会用到如下的语句
select schema_name from information_schema.schemata limit 1
这里又由于我们要绕过select from的限制,因此我们就要使用select 1,\N的形式。
而这里我们可以看出来报错貌似要求我们只能有一列的返回结果,但是我们由于引入了
\N符号,我们必须要有两列。
9:之前有作过如下的测试:
可以看出两列也是可以做大小判断的,这里我们利用这个trick,因此我们至少可以试试盲注。
我们先用盲注,然后再试试难度较大的报错
10:我的第一个schema_name的长度是18,结果为真的时候显示了数据库记录
11:结果为假的时候显示为空
果真可以盲住。
12:接下来我们来看看如何进行报错的注入,我擦勒,又在脑[wen]海[dang]里想了想,又是好长段时间过去了,发现
有如下记录:
里面提到了
13:这个报错有限制,提示是mysql5.5版本以上才能使用,既然如此我们试试
这个大概知道了,就应该是两边长度不一样,既然这样粗暴点直接给补齐再试试:
篇后语:
市面上在过滤的时候都会允许select和from之间添加英文字符的,这样的waf规则都会被
这种方法给bypass。估计够各厂商喝一壶了。
到此结束!
漏洞证明:
9:之前有作过如下的测试:
可以看出两列也是可以做大小判断的,因此我们至少可以试试盲注入。
我们先用盲注,然后再试试难度大的报错
10:我的第一个schema_name的长度是18,结果为真的时候显示了数据库记录
11:结果为假的时候显示为空
果真可以盲住。
12:接下来我们来看看如何进行报错的注入,我擦勒,又在脑[wen]海[dang]里想了想,又是好长段时间过去了,发现
有如下记录:
里面提到了
13:这个报错有限制,提示是mysql5.5版本以上才能使用,既然如此我们试试
这个大概知道了,就应该是两边长度不一样,既然这样粗暴点直接给补齐再试试:
篇后语:
市面上在过滤的时候都会允许select和from之间添加英文字符的,这样的waf规则都会被
这种方法给bypass。
到此结束!
修复方案:
这次感觉要添加特例了
版权声明:转载请注明来源 MayIKissYou@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2015-06-18 10:15
厂商回复:
小伙伴们今天真是热情,接连报了两个问题,在此表示深深的感谢。
我们会尽快修复这个问题。
最新状态:
暂无