Jamers Posted January 27, 2015 Report Share Posted January 27, 2015 网站上传文件用得较多的就是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 More sharing options...
Jamers Posted January 27, 2015 Author Report Share Posted January 27, 2015 另外附件内文件是在64位系统中编译的,不知道会不会有其它问题,如果有任何问题请及时反馈。 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now