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

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

缺陷编号:wooyun-2013-043417

漏洞标题:500wanCAIPIAO站sql注入可导致注册信息泄露

相关厂商:500wan.com

漏洞作者: sql

提交时间:2013-11-19 23:31

修复时间:2014-01-03 23:32

公开时间:2014-01-03 23:32

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-11-19: 细节已通知厂商并且等待厂商处理中
2013-11-24: 厂商已经确认,细节仅向厂商公开
2013-12-04: 细节向核心白帽子及相关领域专家公开
2013-12-14: 细节向普通白帽子公开
2013-12-24: 细节向实习白帽子公开
2014-01-03: 细节向公众公开

简要描述:

500wan采彡PIAO站sql注入可导致800万用户信息泄露

详细说明:

其实就是论坛的二次注入。
我看到http://bbs.500.com 论坛采用的是 discuzx1.5 所以才去测试是否存在二次注入的。
但是过程很郁闷。
首先刚注册用户不让发帖,我只好注册后等了2天。等能发帖了 我发现 一小时内只能发10个帖子
并且一分钟之后 就不能编辑了。所以 补充的时候必须很快的改回来,弄个本吊很狼狈。
中间我还浪费几个帖子 导致我等了1个小时。。。。。
好了不说这些了。上图。

111113.jpg


这是数据库信息。

xxxxx.jpg


这是其中一个管理员的密码。

ddddd.jpg


这是用户数
我查了3遍 真的是790多万啊 我还以为几十万呢。
然后我随便导出来了几条用户数据。

vvvvvvvvvvvv.jpg


800万啊
其实这个拿shell很简单的,
进后台 不是创始人也可以 模板那里 直接上传xml,shell就到手了。
不过我没拿你们shell 也没脱你们库哦
所以求礼物啊。。。。

漏洞证明:

其实就是论坛的二次注入。
我看到http://bbs.500.com 论坛采用的是 discuzx1.5 所以才去测试是否存在二次注入的。
但是过程很郁闷。
首先刚注册用户不让发帖,我只好注册后等了2天。等能发帖了 我发现 一小时内只能发10个帖子
并且一分钟之后 就不能编辑了。所以 补充的时候必须很快的改回来,弄个本吊很狼狈。
中间我还浪费几个帖子 导致我等了1个小时。。。。。
好了不说这些了。上图。

111113.jpg


这是数据库信息。

xxxxx.jpg


这是其中一个管理员的密码。

ddddd.jpg


这是用户数
我查了3遍 真的是790多万啊 我还以为几十万呢。
然后我随便导出来了几条用户数据。

vvvvvvvvvvvv.jpg


800万啊
其实这个拿shell很简单的,
进后台 不是创始人也可以 模板那里 直接上传xml,shell就到手了。
不过我没拿你们shell 也没脱你们库哦
所以求礼物啊。。。。

修复方案:

升级discuz!论坛 打补丁。
所以求礼物啊。。。。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2013-11-24 21:44

厂商回复:

首先感谢sql对500wan彩票网信息安全作出的卓越贡献!虽然礼物的价格和漏洞的价值相距甚远,但礼物是必须的,聊表谢意,请留下您的联系方式,相关的同事会联系您。
再说说rank,从漏洞危害上说,这个漏洞大概是中危左右(原因详见下文分析),但从对我们公司及乌云上其他的同行的帮助来说,这个漏洞给个20分一点都不为过,所以选了高危。嗯,做好心理准备,这应该是乌云上有史以来最长的厂商回复。
接着我说说我收到这个漏洞信息后发生的事,整个过程的情节跌宕起伏,希望大家能从中有所收获(敲了很多字,怕丢失,没敢在乌云上写,如果格式变乱了,大家将就着看吧)。
1、收到漏洞上报
看到图片上的漏洞信息,心中缓缓的惦记了负责BBS研发的孩纸若干次。这得回溯到3年前,由于那时discuz的小花经常开,我们和研发讨论过BBS升级的事,研发当时的反馈是“BBS已经做了大量的二次开发,升级的工作量较大;并且BBS的身份认证是通过主站的单点登陆实现,BBS没有用户登陆入口,其漏洞不会影响到主站。”
这个观点我们显然不敢苟同,因为即使BBS本身的身份认证不会影响到主站,但黑客可能会先攻击BBS,然后通过BBS攻击其他服务器,所以在当时,我们和运维对BBS服务器做了如下的措施:
*把BBS服务器托管到一个单独的机房,和主站服务器在物理上隔离。
*把BBS系统重装,并部署了服务器安全基线,例如安全内核,PHP安全模式,危险函数禁用等措施。
*把BBS的代码做一次检查,确认没有和主站相关的代码存在。
遗憾的是,3年前我们没对BBS数据库里的哈希进行检查和核对,当然了,这是基于筒子之间的信任。
历史回顾完毕,但是当我们看到sql反馈的这个漏洞,我们不得不怀疑在那之后有没什么变更是我们不知道的?同时还产生了好些疑问,特别是主站的和BBS的哈希算法不一样,为啥会有两个库,为啥单点登陆还需要个库?想着想着有点凌乱了。
带着问题,我们开始了下一步的工作。
2、确认漏洞及影响。
在一阵忆苦思甜之后,我们决定拉上负责WEB安全、研发和运维的同事一起确认这个漏洞及影响。
#定损
*漏洞是否可以重现?确认了,确实是BBS存在一个SQL二次注入漏洞,也确实可以读到数据库的信息。
*利用该漏洞是否可以读出BBS库的所有信息?确认了,确实可以,用户相关的记录数是在800W左右。
*利用该漏洞是否可以获得OS权限?由于我们能力有限,我们无法获得OS权限;sql应该是可以的拿到OS权限的,但是BBS实施了安全基线,绝大部分人是拿不到可以方便渗透和提权的交互shell的,同时BBS还运行在安全内核之上,想要localroot也是比较困难(至少对我们来说是很困难的);当然了,对于大婶来说,渗透不一定需要交互shell或者localroot的,这个话题博大精深,我们无法评论更多,希望乌云的白帽子可以在zone里讨论一下。
*利用该漏洞是否可以对其他系统、网络或主机进行渗透?同上,受到我们自身能力的限制,加上BBS服务器与主站服务器物理隔离及安全基线的防护,我们难以基于BBS的注入漏洞对其他系统、网络和主机进行渗透。
*为神马会有这么多哈希存在?800W左右的哈希到底是怎么来的?研发的同事解释如下:在做单点登陆的时候,为了保证BBS程序的完整性,避免代码改动过大导致其他BUG,同时后台管理员、客服等角色的身份认证及授权需要通过BBS自身完成,所以保留了数据库中ucenter_members表里的password和salt字段。只有当主站注册的用户访问过BBS,这个表里才产生用户名及对应的哈希和salt。这也从侧面解释了为什么BBS里用户的数量和主站数量相差很大。并且这个哈希和salt是随机产生的,可以随意更改,但不影响用户登陆BBS。
研发的同事拿出了BBS单点登陆相关代码,大家一起围观后确实如此。
*二次确认。哈希的原因搞清楚了,但是基于这次漏洞的教训,我们决定再次确认一次。让DBA当场把某个同事的帐号在BBS数据库里对应的哈希和salt替换掉,然后用他帐号登陆主站,并且访问BBS。果然可以正常登陆主站和BBS,看来BBS里的哈希和主站及BBS的用户信息及登陆确实没啥关系。
为了充分的说明这个问题,我们让DBA截了个图。
*三次确认。经过上面的验证,虽然说基本确认了漏洞对用户数据的影响了,但看到这800W哈希,某位筒子还是忍不住提出了他的请求:“我想对这些哈希进行碰撞,再确认一次”。经过与研发、运维讨论,可以给他导出除了客服及管理员之外的哈希和salt。
这位筒子拿到800W的哈希后,祭出了他两年前的ATI 6950*3的挖矿机和大名鼎鼎的hashcat+对这800W哈希进行碰撞(隐隐的感觉到他是一个壕,两年前ATI 6950*3 可是顶配,而且两年前的比特币现在价格翻了N翻了,这货绝对是个矿主,不过他性别男,所以大家也别求联系方式了)。碰撞的具体过程不赘述了,分享几个关键点给各位看官。
discuz用的是md5(md5(password).动态salt)的哈希算法,这个在hashcat+中对应的hash-type是2611,也就是VBB< v.3.8.5,注意了,要用hashcat+ 0.11以上的版本进行尝试,因为0.11以下的版本2611的salt位数只能是3,而discuz的salt位数是6,顺便说一下VBB > 3.8.5的,也就是2711的hash-type,对应的是30位的salt。
hashcat+碰撞动态salt的一次哈希载入量是200W条,如果超过200W条,貌似会报错退出。
hashcat+碰撞200W条md5(md5(password).动态salt的哈希速度极慢,跑了3天没跑出来一条。一开始怀疑是不是因为哈希是随机生成的,本来就没法跑出来,后来仔细一看,进度慢着呢,不是哈希的问题,怀疑可能是由于200W个哈希*200W个salt导致碰撞空间被放大了N倍导致的。
*结论:
BBS数据库的问题影响一部分需要登陆后台的帐号,例如客服,管理员。
BBS数据库的问题如果导致部分用户名泄漏,主站的撞库攻击可能会有增长。
3、反思,止损
*为什么会造成这个漏洞?
理论上discuz后台是有升级提醒的,但是管理员觉得不爽,让研发把这个功能在二次开发的过程中给干掉了,安全团队并不知情。
安全团队负责应用安全的筒子以为discuz会在后台提示补丁,也以为补丁一直在打,实际上是安全团队对公司非核心业务的安全跟进不足。
数据库里的哈希和salt本来就是没意义的,但是研发并没有在生成哈希和salt的时候做处理,让大家知道这些信息是没意义的。
从根本上说,就是大家对一个已经隔离且加固了的边缘系统的安全不够重视。
*怎么降低漏洞的危害?
为了避免后台密码被破解进而访问后台,BBS的后台做了访问控制。
另外为了避免大家怀疑我们在忽悠大家,我们让DBA把哈希统的最后10位统一替换成"randomhash",把salt统一替换成salt11(有图有真像,图截好了,图床也找好了,但图片在得到公司授权之前不能发出来),同时让研发也修改了代码,单点登陆BBS时,在BBS数据库中产生符合上述特征的哈希和salt。
让研发开启discuz的补丁提醒功能,同时增加邮件提醒的功能,一旦出现补丁,安全团队可以收到告警邮件并推进安全补丁实施。
由于部分用户名可能泄漏,需加强撞库的监控及拦截。
*怎么解决当前的问题?
修复到现在为止discuz的所有漏洞。
*怎么呈现漏洞的价值?以后如何避免类似问题再次出现?
由于公司保密的原因,这部分能分享的干货不多。只能谈一些虚的,从思想上重视边缘业务,因为这些边缘业务可能是安全的短板,千里之堤可能毁于蚁穴;实践出真知。
最后,再次感谢白帽子sql对500wan彩票网信息安全作出的卓越贡献!

最新状态:

暂无