一种自动化检测Flash中XSS方法的探讨

0x00
前面的话对于如何检测Flash 中的XSS,每个人都有自己的方法,无论是使用成型的自动化工具(比如 swfscan)还是自己开发自动化工具(先反编译,再对 actionscript 代码审计)还是直接人工对代码进行审计。都能够检测到 Flash 中存在的 XSS 漏洞。
但是这些方法会存在一些问题,如:自动化工具属于静态分析,误报比较高,需要投入
大量人工精力去加以分析完全人工效果
最好,但是也更加耗费精力在这里我们来探讨一种动态检测 Flash 中 XSS 的方法,该方法有自己的
优点,但是也有比较明显的缺点,所以本文的标题定位于“探讨”。498)this.width=498;' onmousewheel = 'javascript:return big(this)' border="0" alt="一种自动化检测Flash中XSS方法的探讨" src="http://s3.51cto.com/wyfs02/M00/38/21/wKioL1OzcD_wb3twAADJb9WkTmg601.png" width="352" height="236" />0x01 原理所谓动态检测,就是通过程序加载 Flash 插件,
然后再载入 Flash 文件,对事件和错误信息进行捕捉,再对信息分析来判断 Flash 中是否存在 XSS 漏洞。先
来看下面两张图,以 Firefox 浏览器为例:498)this.width=498;' onmousewheel = 'javascript:return big(this)' style="width: 527px; height: 193px" border="0" alt="一种自动化检测Flash中XSS方法的探讨" src="http://s9.51cto.com/wyfs02/M00/38/20/wKioL1OzbtzzGtAFAACPbCyU5As894.jpg" width="642" height="258" />Firefox 访问 http://test.com/xss.swf?alert=1,Flash 成功执行 JS 代码,弹出对话框。498)this.width=498;' onmousewheel = 'javascript:return big(this)' border="0" alt="一种自动化检测Flash中XSS方法的探讨" src="http://s6.51cto.com/wyfs02/M01/38/20/wKioL1Ozbu_BqBnXAACtiOJv5Tg840.jpg" width="484" height="421" />Firefox 访问 http://test.com/xss.swf?alert=1\",Flash 执行 JS 报错,显示错误详细信息。Firefox 能够显示 Flash 执行 JS 错误时的详细错误信息。到这里也就
明白检测的原理了,就是:◆程序调用 Firefox◆Firefox 加载 Flash 插件◆Firefox 访问对参数经过构造的 Flash 链接,比如 http://test.com/xss.swf?alert=1\"◆程序捕捉错误信息或者 alert 事件◆根据错误信息或者 alert 事件信息来判断该 Flash 是否存在 XSS 漏洞0x02 具体实现具体如何实现呢?我们不会真的调用 Firefox,而是直接采用一套开源的可以解析 JS 的工具包:CasperJS。下面看下 CasperJS 官网的一段介绍:CasperJS is an open source navigation scripting & testing utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko).CasperJS 目前支持两种引擎:PhantomJS(WebKit内核)和 SlimerJS(Gecko内核)。Gecko内核就是 Firefox 所使用的内核,又通过 CasperJS 文档了解到,使用 SlimerJS 引擎时候可以通过 loadPlugins 来加载 Flash 插件。所以我们就可以通过 CasperJS 来完成我们的功能需求,下面是代码实现:flash_detect.jsvarcasper=require('casper').create({ pageSettings:{ loadImages:true, loadPlugins:true//loadflashplugin }, logLevel:"info", verbose:false}); casper.start('about:blank',function(){}); //catchalert casper.on('remote.alert',function(message){ this.echo('{"type":"alert","msg":"'+message+'"}'); }); //catchpageerrorinfo casper.on('page.error',function(message,trace){ this.echo('{"type":"error","msg":"'+message+'"}'); }); varurl=casper.cli.get(0); casper.thenOpen(url,function(){ this.wait(2000,function(){})//delay2's }); casper.run();代码很简单,就是通过 CasperJS 来访问 Flash 文件,然后捕捉页面中的错误信息和 alert 事件。在这里有一点需要注意就是
有的 Flash 不会立即执行 JS 代码,所以我们在打开一个 Flash 文件后,在当前的页面停留 2 秒。0x03 执行效果我们刚才那个 Flash 文件用这个检测代码检测下看看效果 ,如下:piacaatpiacain~/source$casperjs--engine=slimerjsflash_detect.js"http://test.com/xss.swf?alert=1"{"type":"alert","msg":"1"} piacaatpiacain~/source$casperjs--engine=slimerjsflash_detect.js"http://test.com/xss.swf?alert=1\\\""{"type":"error","msg":"SyntaxError:missing)afterargumentlist"}0x04 写在后面的话实际中我通过访问网上的一些业务,把其中的 Flash 抓下来,然后通过程序去检测,效果还是不错的。当然这其中包括我们自己业务中的 Flash XSS 漏洞。但是目前的检测程序只能是一个 Demo,要想在生产环境中使用,还需要解决以下问题:效率:目前是单进程单线程进行检测,会影响检测效率,同时由于 SlimerJS 会打开一个 GUI 窗口,在一定程度上也会影响效率;误报:在 Demo 中我们没有过多的处理错误信息,所以在实际测试中会有比较多的误报;参数:这里的参数只是 Flash 文件接收的参数,我们通过日志分析等可以快速
获取业务中的 Flash 文件,但是如何获取 Flash 接收的所有参数名呢?上面几个问题并不是致命的问题,我们可以通过多种方法去解决,但是正如前面所说的这个检测程序有个致命的缺点,那就是:这个检测脚本只能检测很明显的 XSS 漏洞,如果 Flash 中对参数有一定的处理措可能就无法进行检测了;所以本文仅仅做自动化检测 Flash 中 XSS 漏洞的探讨。【编辑推荐】reflected_xss检测工具的介绍存储型XSS从易到难的挖掘过程针对XSS漏洞的前端防火墙:无懈可击的钩子针对XSS漏洞的前端防火墙:天衣无缝的防护针对XSS漏洞的前端防火墙:整装待发【责任编辑:蓝雨泪 TEL:(010)68476606】 原文:一种自动化检测Flash中XSS方法的探讨 返回网络安全首页

时间: 2024-09-27 20:09:19

一种自动化检测Flash中XSS方法的探讨的相关文章

JavaScript通过代码调用Flash显示的方法_javascript技巧

本文实例讲述了JavaScript通过代码调用Flash显示的方法.分享给大家供大家参考,具体如下: <script type="text/javascript" language="javascript" src="Scripts/swfobject.js"></script> <script language="javascript"> function load(){ var swfV

一种flash中密码验证的新方法:检测鼠标操作

鼠标 前几天,偶突然想到一种通过检测鼠标操作来验证密码的方法(让以往键盘输入密码的方法见鬼去◎◎##),偶感觉很新颖,推荐给大家,希望你能喜欢---鼠标操作指令为: (以笑脸为区域,依次操作)进去.左击.拽出.拽出放回.点击.出来.进去 成功后,笑脸自动消失(相当于进入系统),否则整个程序退出 如果你没有成功,你就看代码,自己反运算得到结果吧!咯咯--- 如果再次将原程序中的数字加密,效果会更好! 大家多题意见呀-----   点击这里下载打包文件

FLASH中响应键盘事件的四种方法

响应 响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是: 1.利用按钮进行检测 2.利用KEY对象 3.利用键盘侦听的方法 4.利用影片剪辑的keyUp和keyDown事件来实现响应键盘 只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就结合理论和自己的想法简要的介绍一下. 第一种响应键盘的方法:利用按钮进行检测来实现响应键盘 在按钮的on

Flash中实现物体运动的三种方法

现在用Flash开发的游戏是越来越多了.很多朋友也很想学习用Flash制作游戏的方法.大家知道,不管在什么游戏中,实现物体的运动是游戏的前提,而不同的游戏里物体移动的方式又不尽相同.所以,想学习制作Flash游戏的朋友今天就先随我一起学学在Flash中实现物体运动的几种方法吧.几种方法如下: 方法一:通过单击按钮实现物体的单位运动 这种方法一般在需要按键的游戏中使用.你也可以给某个实体加上这段代码,然后通过单击这个实体达到某种游戏效果. 1.打开Flash,按快捷键"Ctrl + M"

Flash中调用外部文本文件的两种方法

方法一:利用上下滚动按钮 1.打开文本文件,将文本复制到Windows 2000自带的程序"记事本"中,并在文本内容的前面输入"t="("t"为我们定义的一个变量),然后保存为"m.txt"文件,保存位置为"我的文档",编码设为"UTF-8"或"Unicode". 2.运行Flash MX,以"也谈在Flash中调用外部文本文件"为名,保存在&qu

Flash 中响应键盘的一般方法

响应 这些是以前整理的,现在发上来,希望对新手有所帮助--响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法也就是 主要的四种,分别是: 1.利用按钮进行检测2.利用KEY对象3.利用键盘侦听的方法 4.利用影片剪辑的keyUp和keyDown事件来实现响应键盘 只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果, 下面我就结合理论和自己的想法简要的介绍一下. 第一种响应

FLASH中响应键盘事件的方法

响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是: 1.利用按钮进行检测 2.利用KEY对象 3.利用键盘侦听的方法 4.利用影片剪辑的keyUp和keyDown事件来实现响应键盘 只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就结合理论和自己的想法简要的介绍一下. 第一种响应键盘的方法:利用按钮进行检测来实现响应键盘 在按钮的on事件处

Flash中MP3导入及同步歌词的方法

了解音乐的几种常见格式: 1.mp3(mpeg-1 audio layer 3): 能够以高音质.低采样率对数字音频文件进行压缩.换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度. 2. wma(windows media audio):是微软在互联网音频.视频领域的力作.常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18. 3. wav

无AS在FLASH中实现三种爆炸效果

目前我们见到的一些flash中的爆炸效果,很多都是应用大量的as或者粒子技术模拟出来的,对于不是很熟悉as的朋友来说,确实很难理解和学习,不过大家别着急,本实例我们就来学习一种不使用任何as(当然最简单的stop()和goto语句是少不了的),来模拟出三种精彩的爆炸效果,其逼真程度一定都不亚于用as 模拟出来的效果,具体效果请看下面的演示: 点击这里下载源文件 首先我们需要准备两张如图1和图2 所示的两张静态图片,图片内容为一团烟雾即可,一张亮些,另一张暗一点,熟悉fireworks 的朋友可以