漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-07177
漏洞标题:播放器代码编写未考虑安全问题导致跨站 [继续FLASH]
相关厂商:百度
漏洞作者: gainover
提交时间:2012-05-16 09:57
修复时间:2012-06-30 09:57
公开时间:2012-06-30 09:57
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-05-16: 细节已通知厂商并且等待厂商处理中
2012-05-17: 厂商已经确认,细节仅向厂商公开
2012-05-27: 细节向核心白帽子及相关领域专家公开
2012-06-06: 细节向普通白帽子公开
2012-06-16: 细节向实习白帽子公开
2012-06-30: 细节向公众公开
简要描述:
除了第三方的 我昨天刚发的 jwplayer 导致的跨站攻击外, 你们自己写的播放器一样存在跨站问题。
jwplayer 的帖子见:http://www.wooyun.org/bugs/wooyun-2010-07166
这几个先赶紧修复~ 。
http://youxi.baidu.com/media/player.swf?debug=alert(/xxx/);
http://www.baidu.com/search/zhidao/badminton/jwplayer/player.swf?debug=alert
http://ued.baidu.com/wp-content/plugins/flash-video-player/mediaplayer/player.swf?debug=alert
http://sem.baidu.com/jw_player/player.swf?debug=alert
接着来看看你们自己的播放器~
详细说明:
漏洞程序:http://mv.baidu.com/export/flashplayer.swf
漏洞代码:
1. 首先是FLASH后面的参数直接传递给了 Parameters.getInstance().data
Parameters.getInstance().data = loaderInfo.parameters;
2. 然后
ExternalInterface.call(Parameters.getInstance().onPlayStart, _arg1);
ExternalInterface.call(Parameters.getInstance().onPlayStop);
ExternalInterface.call(Parameters.getInstance().onFileLoadedError);
这3处都是直接传入到call里做参数。
3. 继续看 Parameters 类的代码
public function get onPlayStart():String{
return (_data["onPlayStart"]);
}
4. 因此,我们可以构造以下恶意代码:?onPlayStart=function(){alert('xx')},一个实际利用代码是:
5. 可得到cookies。 剩下的俺不多说了。其它类似漏洞链接:
WooYun: 淘宝网COOKIES盗取[flash编程安全+apache http-only cookie 泄漏利用]
WooYun: 新浪微博COOKIES盗取[flash编程安全+apache http-only cookie 泄漏利用]
漏洞证明:
修复方案:
目前这种跨站,浏览器自己的保护措施起不到拦截作用。因此只要用户点了链接,就十分可能中招了。
1. 检查全站 JWPlayer 删除或更换其它。
2. 你们自己这个播放器,修改源码即可。
其实么,这里应该将 FLASH这种文件, 都单独放到一个不同的域里, 比如 baiduswf.com, 这样即使FLASH有问题, 也不会有太大影响。
像http://www.baidu.com/search/zhidao/badminton/jwplayer/player.swf?debug=alert 这种第三方的播放器,不应该出现在主域名之下的。
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2012-05-17 13:31
厂商回复:
感谢提交,我们会尽快修复~
最新状态:
暂无