Jump to content
新域网络技术论坛

swfupload漏洞修复


Jamers
 Share

Recommended Posts

网站上传文件用得较多的就是swfupload,由于它可以提供多个文件同时上传,深受各大网站的喜爱。但是很久很久之前就发现swfupload有XSS漏洞。本文引用下列链接内的内容:https://www.imququ.com/post/security-problem-in-flash-uploader.html 但是国内几乎没办法访问,会翻墙的可以看一下具体原理。下列简单说明一下。包括目前很多的站点都还在使用此组件上传文件,安全堪忧。

 

由于swfupload在2010-3-5后就没有更新过,所以这个漏洞还是一直存在的。附件提供一个修复后的swf文件下载,以免除很多组件下载安装并且编译swf文件。

 

测试方式:

http://xxx.com/swfupload.swf?movieName=%22])}catch(e){if(!window.x){alert(1);window.x=1}}try{([%22

如果访问有一个窗口弹出的,证明有漏洞。如果没有则说明是安全的。

 

 

 

第三方Flash组件带来的安全问题

发表于 2012-07-22
大家知道,在不支持以Ajax方式发送二进制数据流的浏览器中,要实现带进度的文件上传功能,一般需要借助Flash了(通过type=file表单上传,加上JS定期向服务器轮询也可以得到进度,不过不在本文讨论范围。同样,ActiveX等方案也不在这里讨论)。除了显示进度,Flash还能批量添加文件,限制文件大小、类型。到现在,Flash实现的文件上传在国内仍然算得上主流方案。

但是,几个月前,几个常用的第三方Flash上传组件纷纷被爆出XSS和CSRF漏洞(不知道什么是XSS/CSRF,以及它们危害的同学请自行搜索)。问题产生的原因主要有两类:

一类是Flash里通过ExternalInterface.call执行JS时,使用了HTML中通过queryString传递过来的变量,并且没对参数进行检查或过滤,由此引发XSS。我知道有此问题的组件包括:SwfUpload V2.2/V2.5,Uploadify V2.1.4。

另外一类是Flash代码里通过Security.allowDomain('*'),破坏了Flash原本的沙箱安全。使得第三方借助这个swf文件获取token等敏感信息成为可能,从而引发CSRF攻击。我知道有此问题的组件有:Plupload V1.5.3。

如果你在项目中使用上述版本的Flash上传组件,建议尽快采取措施排除风险。对于Uploadify和Plupload来说,官方一直都有更新,推荐直接去官方更新到最新版。对于SwfUpload,官方源已经有2年没动静,应该是已经处于无人维护的状态。如果坚持要用它,建议下载源码进行修改。

 

简单说下修改方法(以V2.2为例,V2.5类似):安装FlashDevelop,打开源码中SWFUpload v2.2.0.1 Core/Flash路径下的SWFUpload v2.as3proj项目文件,修改SWFUpload.as并重新编译:

this.movieName = decodeURIComponent(root.loaderInfo.parameters.movieName;
修改为
this.movieName = decodeURIComponent(root.loaderInfo.parameters.movieName.replace(/[^\w\.-]/g, ''));

swfupload.rar

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...