您的位置:首页 > 其它

可能是一种通杀的waf bypass方式

2015-01-05 15:34 495 查看

http://www.wooyun.org/bugs/wooyun-2014-089426


漏洞概要关注数(76) 关注此漏洞


缺陷编号:
WooYun-2014-89426


漏洞标题: 可能是一种通杀的waf bypass方式(安全狗实例)


相关厂商:
安全狗


漏洞作者:
MayIKissYou


提交时间: 2014-12-31 10:52


公开时间: 2015-01-05 10:54


漏洞类型: 设计缺陷/逻辑错误


危害等级: 高


自评Rank: 15


漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞


漏洞来源: http://www.wooyun.org

Tags标签:
设计错误



6人收藏 收藏
分享漏洞:


1


漏洞详情


披露状态:

2014-12-31: 细节已通知厂商并且等待厂商处理中

2015-01-05: 厂商已经主动忽略漏洞,细节向公众公开


简要描述:

由于某些字符处理不好,可能导致所有的waf bypass。


详细说明:

ps.这种类型厂商不知道提给谁,提给wooyun不被X吧

1:一般所有的waf在做sql防注入的时候都会对sql注入的union注入方式防的死死的,大致模型是这样的:

code 区域
select id from table where x = 1 union select 1,2 from dual


各家对于此处的防范各有不同,但是防范的都很好。

2:在mysql里面有一个空白符为%a0,此符号为空白符。

3:但是%a0是扩展字符里面的,当%a0+另外一个字符,可能会在web层面解析的时候出现意想不到的结果。

4:手上有安全狗,拿安全狗测试了,首先关闭安全狗的服务,我们在url中输入以下url:

code 区域
http://192.168.4.70/low.php?id=11' union%a0select version(),database() %23&Submit=a


首先我的id是一个字符类型注入的参数,此时我们去看下页面返回的结果





发现结果中出现了乱码,感觉我的%a0和s一起被解析成了乱码。但是在mysql层面去执行的时候%0a又被当做空白符执行了,显示出来了我的mysql的版本和数据库名称,感觉碉堡了。

5:这样一来解析出来的结果岂不是bypass掉了无论是waf也好,还是应用程序本身的正则也好。

6:我们开启安全狗试试,先输入%0a查看安全是不是好使的:





果然拦截了

7:此时将%0a换成%0a尝试一下:





可以看到安全狗没有反应,显示出来了数据库的信息,因此看来至少可以搞定狗了,这样的web解析感觉其他的waf很有可能也会有类似的问题。

ps.会不会被雷p啊


漏洞证明:

7:此时将%0a换成%0a尝试一下:






修复方案:

看着修吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: