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

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

缺陷编号:wooyun-2013-017459

漏洞标题:Flash应用安全系列[5]--QQ邮箱永久劫持漏洞

相关厂商:腾讯邮箱

漏洞作者: p.z

提交时间:2013-01-18 00:03

修复时间:2013-03-04 00:04

公开时间:2013-03-04 00:04

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:11

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-01-18: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-03-04: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

QQ邮箱对于跨域请求过滤不严,可能导致用户邮件被持久劫持

详细说明:

我们知道,在浏览器的安全模型中,同源策略--SOP(Same Origin Policy)是最为基础的一环,它决定了WEB上的哪些资源是可以被脚本访问的,哪些资源则是被拒绝的。撇开HTML5中的 Access-Control-Allow-Origin头不说,执行域在A.com域下的脚本是不能直接访问到B.com的资源的,而我们所寻找的那些跨站漏洞,正是为了绕过这个SOP的限制。但是作为第三方插件在浏览器内安装的Flash Player,却破坏了SOP,只需要对方的crossdomain.xml运行,一个B.com的SWF文件就可以读取到A.com的资源。
现在让我们来看看QQ邮箱的corssdoamain.xml

<cross-domain-policy>
<allow-access-from domain="*.qqmail.com"/>
<allow-access-from domain="*.qq.com"/>
</cross-domain-policy>


使用了通配符,使得任意qq.com子域下的SWF都可以读取到mail.qq.com的资源。
现在我们要做的就是在*.qq.com下寻找一个可以上传SWF的地方,由于SWF能够执行JS脚本,因此允许上传SWF文件相当于允许在上传域下执行脚本,所以很少有站点能够上传SWF文件,但是允许上传JPG的地方却不少。Flash Player对于SWF文件的后缀名并不敏感,因此我们只需要找到一个可以上传JPG且没检验图像文件合法性的上传点就可以了。比如这个:act.news.qq.com/show_umodify.php
QQ邮箱在设置转发的时候会检验post过来数据的sid,但是这个sid是附在url中的,很容易通过在发送到外域的数据包referrer头被取到。而且我们现在已经可以读取mail.qq.com上的数据,可以直接读取mail.qq.com/cgi-bin/login?vt=passport&vm=wsk&delegate_url=得到sid。
除了token,检测referre头常被作为防止CSRF的另一种手段,经过测试,QQ邮箱在这里也进行了检测,对于外域发送过来的数据包直接废弃,但是对于qq.com子域下发送的请求,是全部接受的,恰好我们的swf也在qq.com的某个子域下,刚好能满足这个条件。

漏洞证明:


qqmail.csrf.as http://swfpoc.appspot.com/source/qqmail.csrf.as

修复方案:

改改crossdomain.xml?再管管referre?

版权声明:转载请注明来源 p.z@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝