|
|
|
联系客服020-83701501

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

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
一种积极化检测 Flash 中 XSS 办法的探求

0x01 前面的话

对于如何检测 Flash 中的 XSS,每一个人都有自己的办法,不管是操纵成型的积极化东西(例如 swfscan)还是自己开荒积极化东西(先反编译,再对 actionscript 代码审计)还是直接家养对代码截至审计。都大要或许检测到 Flash 中存在的 XSS 缝隙。但是这些办法会存在一些标题,如:

1.?积极化东西属于动静分析,误报比较高,须要投入大批家养肉体去加以分析

2.?完全家养成就最佳,但是也加倍耗费肉体

在这里我们来探求一种信息检测 Flash 中 XSS 的办法,该办法有自己的所长,但是也有比较清楚的流弊,所以本文的标题定位于“探求”。

0x02 情理

所谓信息检测,便是经由法度加载 Flash 插件,此后再载入 Flash 文件,对事情和谬误信息截至捕捉,再对信息分析来果断 Flash 中可否存在 XSS 缝隙。

先来看上面两张图,以 Firefox 浏览器为例:

e2333e920f647

Firefox 接见?http://test.com/xss.swf?alert=1,Flash 得胜实验 JS 代码,弹出对话框。

2

Firefox 接见?http://test.com/xss.swf?alert=1\”,Flash 实验 JS 报错,透露表现谬误具体信息。Firefox 大要或许透露表现 Flash 实验 JS 谬误时的具体谬误信息。

到这里也就清楚检测的情理了,便是:

1.?法度调用 Firefox

2.?Firefox 加载 Flash 插件

3.?Firefox 接见对参数经过构造的 Flash 链接,例如?http://test.com/xss.swf?alert=1\”

4.?法度捕捉谬误信息大要或许 alert 事情

5.?依据谬误信息大要或许 alert 事情信息来果断该 Flash 可否存在 XSS 缝隙

0x03 具体实现

具体如何实现呢?我们不会真的调用 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.js

Default
12345678910111213141516171819202122 var casper = require('casper').create({pageSettings: {loadImages:  true,loadPlugins: true       // load flash plugin},logLevel: "info",verbose: false});casper.start('about:blank', function() {});casper.on('remote.alert', function(message) {this.echo('{"type": "alert", "msg":"' + message + '"}');});casper.on('page.error', function(message, trace) {this.echo('{"type": "error", "msg":"' + message + '"}');});var url = casper.cli.get(0);casper.thenOpen(url, function() {this.wait(2000, function(){})});casper.run();

?代码很冗杂,便是经由 CasperJS 来接见 Flash 文件,此后捕捉页面中的谬误信息和 alert 事情。在这里有一点须要注意便是有的 Flash 不会立即实验 JS 代码,所以我们在打开一个 Flash 文件后,在以后的页面搁浅 2 秒。

0x04 实验成就

我们刚才那个 Flash 文件用这个检测代码检测下看算作就 ,如下:

Default
12 piaca at piaca in ~/source$ casperjs --engine=slimerjs flash_detect.js "http://test.com/xss.swf?alert=1"{"type": "alert", "msg":"1"}

Default
12 piaca at piaca in ~/source$ casperjs --engine=slimerjs flash_detect.js "http://test.com/xss.swf?alert=1\\\""{"type": "error", "msg":"SyntaxError: missing ) after argument list"}

0x05 写在后背的话

理论中我经由接见网上的一些业务,把此中的 Flash 抓上去,此后经由法度去检测,成就还是不错的。虽然这此中包孕我们自己业务中的 Flash XSS 缝隙。

但是目前的检测法度只能是一个 Demo,要想在临盆情况中操纵,还须要管理如下标题:

1.?服从:目前是单进程单线程截至检测,会影响检测服从,同时由于 SlimerJS 会打开一个 GUI 窗口,在定然程度上也会影响服从;

2.?误报:在 Demo 中我们没有过量的处理谬误信息,所以无理论测试中会有比较多的误报;

3.?参数:这里的参数只是 Flash 文件领受的参数,我们经由日记分析等大要快捷失掉业务中的 Flash 文件,但是如何失掉 Flash 领受的部门参数名呢?

上面几个标题并不是致命的标题,我们大要经由多种办法去管理,但是正如前面所说的这个检测法度有个致命的流弊,那便是:

1.?这个检测脚本只能检测很清楚的 XSS 缝隙,如果 Flash 中对参数有定然的处理措大要或许就无法截至检测了;

所以本文仅仅做积极化检测 Flash 中 XSS 缝隙的探求,如果你有好的办法,盼望能与我革新。thx。

【via@新浪平安】

数安新闻+更多

证书相关+更多