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

0x00 前面的话

对于如何检测Flash 中的XSS,每个人都有自己的方法,无论是使用成型的自动化工具(比如 swfscan)还是自己开发自动化工具(先反编译,再对 actionscript 代码审计)还是直接人工对代码进行审计。都能够检测到 Flash 中存在的 XSS 漏洞。但是这些方法会存在一些问题,如:

自动化工具属于静态分析,误报比较高,需要投入大量人工精力去加以分析

完全人工效果最好,但是也更加耗费精力

在这里我们来探讨一种动态检测 Flash 中 XSS 的方法,该方法有自己的优点,但是也有比较明显的缺点,所以本文的标题定位于“探讨”。

0x01 原理

所谓动态检测,就是通过程序加载 Flash 插件,然后再载入 Flash 文件,对事件和错误信息进行捕捉,再对信息分析来判断 Flash 中是否存在 XSS 漏洞。

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

Firefox 访问 http://test.com/xss.swf?alert=1,Flash 成功执行 JS 代码,弹出对话框。

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.js

  1. var casper = require('casper').create({  
  2.     pageSettings: {  
  3.         loadImages:  true,   
  4.         loadPlugins: true // load flash plugin  
  5.     },  
  6.     logLevel: "info",  
  7.     verbose: false 
  8. });  
  9.    
  10. casper.start('about:blank'function() {});  
  11.    
  12. // catch alert   
  13. casper.on('remote.alert'function(message) {  
  14.     this.echo('{"type": "alert", "msg":"' + message + '"}');  
  15. });  
  16.    
  17. // catch page error info  
  18. casper.on('page.error'function(message, trace) {  
  19.         this.echo('{"type": "error", "msg":"' + message + '"}');  
  20. });  
  21.    
  22. var url = casper.cli.get(0);  
  23.    
  24. casper.thenOpen(url, function() {  
  25.         this.wait(2000, function(){})   // delay 2's  
  26. });  
  27.    
  28. casper.run(); 

代码很简单,就是通过 CasperJS 来访问 Flash 文件,然后捕捉页面中的错误信息和 alert 事件。在这里有一点需要注意就是有的 Flash 不会立即执行 JS 代码,所以我们在打开一个 Flash 文件后,在当前的页面停留 2 秒。

0x03 执行效果

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

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

0x04 写在后面的话

实际中我通过访问网上的一些业务,把其中的 Flash 抓下来,然后通过程序去检测,效果还是不错的。当然这其中包括我们自己业务中的 Flash XSS 漏洞。

但是目前的检测程序只能是一个 Demo,要想在生产环境中使用,还需要解决以下问题:

效率:目前是单进程单线程进行检测,会影响检测效率,同时由于 SlimerJS 会打开一个 GUI 窗口,在一定程度上也会影响效率;

误报:在 Demo 中我们没有过多的处理错误信息,所以在实际测试中会有比较多的误报;

参数:这里的参数只是 Flash 文件接收的参数,我们通过日志分析等可以快速获取业务中的 Flash 文件,但是如何获取 Flash 接收的所有参数名呢?

上面几个问题并不是致命的问题,我们可以通过多种方法去解决,但是正如前面所说的这个检测程序有个致命的缺点,那就是:

这个检测脚本只能检测很明显的 XSS 漏洞,如果 Flash 中对参数有一定的处理措可能就无法进行检测了;

所以本文仅仅做自动化检测 Flash 中 XSS 漏洞的探讨。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/130649.html<

(0)
运维的头像运维
上一篇2025-02-26 04:31
下一篇 2025-02-26 04:32

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注