ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flash安全总结

2019-05-27 15:43:53  阅读:535  来源: 互联网

标签:总结 xml www Flash crossdomain flash swf 安全 com


ActionScript

AS是基于ECMAScript的语言,为了交互的需要flash应用引入ActionScript。ActionScript一共有三个版本,其中3.0较之前两个版本变化很大。ActionScript 代码可用来向文档中的媒体元素添加交互式内容。例如,可以添加代码以便用户在单击某按钮时显示一幅新图像,还可以使用 ActionScript 向应用程序添加逻辑。逻辑使应用程序能够根据用户的操作和其它情况采取不同的工作方式。和其他的语言一样,如果没有规范的编码同样会产生安全问题。
a) 未初始化的flash变量
Flash变量是swf开发者用来从web页面接受数据的,一般是通过Object或者Embed标签来进行传递。例如:

<object width="550" height="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0">
<param name="movie" value="somefilename.swf">
<param name="FlashVars" value="var1=val1&var2=val2">
<embed src="somefilename.swf" width="550" height="400" FlashVars="var1=val1&var2=val2">
</embed>

</object>同样可以用下面这种方式来传递:http://www.example.org/somefilename.swf?var1=val1&var2=val2在as2.0中,任何没有初始化的全局变量都被认为是flash变量。其中全局变量是那些以_root、_gloabal、_level0为前缀的变量。也就是说:_root.varname 如果其在as代码中没有被初始化,那么就可以同过如下方式来重写:http://victim/file.swf?varname=valueb) 不安全的方法
在调用不安全的方法,而且对传入的参数没有做有效性检查时,就会出现安全问题,不安全方法有: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)

 

htmlTextFlash安全策略

a) 服务端crossdomain.xml文件:

flash在跨域时唯一的限制策略就是服务端的crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据。位于www.a.com域中的swf文件要访问[url]www.b.com[/url]的文件时,swf的虚拟环境flash控件首先会检查www.b.com服务器目录下是否有crossdomain.xml文件,如果没有,则访问不成功;若crossdomain.xml文件存在,且里边设置了允许www.a.com域访问,那么通信正常。所以要使Flash可以跨域传输数据,其关键就是crossdomain.xml。关于其详细介绍可以查看这里。一些crossdomain.xml实例可以访问如下连接:
http://www.renren.com/crossdomain.xml
http://www.youku.com/crossdomain.xml<cross-domain-policy>
<allow-access-from domain="*.xiaonei.com"/>
<allow-access-from domain="xiaonei.com"/>
<allow-access-from domain="*.renren.com"/>
<allow-access-from domain="renren.com"/>
<allow-access-from domain="*.kaixin.com"/>
<allow-access-from domain="kaixin.com"/>
<allow-access-from domain="*.xnimg.cn"/>
<allow-access-from domain="xnimg.cn"/>
</cross-domain-policy>这是一个典型的crossdomain.xml文件,最重要的应该数allow-access-from,flash应用通过检查该节点的属性值,确认能够读取本域内容的flash文件来源域。
  * 号,如<allow-access-fromdomain="*" />,表示匹配所有域和可跨域访问本域上的内容。
    后接后缀的星号,表示只匹配那些以指定后缀结尾的域,如*.renren.com,那么a.renren.com,b.renren.com都可以访问该域下的内容。

b) 客户端

在一个页面引入一个flash时,一般的做法是下面这种形式:
------begain-----------<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
name="Main" width="1000" height="600" align="middle" id="Main">
<embed flashvars="site=&sitename=" src='Loading.swf?user=453156346&key=df57546b-c68c-4fd7-9f9c-2d105905f132&v=10950&rand=633927610302991250' width="1000" height="600"
align="middle" quality="high" name="Main" allowscriptaccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>-------end-------
由于flash的强大,并且在页面元素里基本等同于script这种危险的标签,对于这点,flash已经有所考虑,在引入flash的时候flash提供了控制属性,其中与安全最为关键的是AllowScriptAccess属性和allowNetworking属性。其中AllowScriptAccess控制flash与html页面的通讯,可选的值有:

  •         always:对与html的通讯也就是执行javascript不做任何限制
  •         sameDomain:只允许来自于本域的flash与html通讯,这是默认值
  •         never:绝对禁止flash与页面的通讯

默认情况下的选项是sameDomain,这个时候某些场景下看起来也是足够安全了,但是我们还是能看到经常有程序允许将这个选项设置为always,而即使是sameDomain也不是在所有场景下都安全的。

 

Flash跨站

上面了解了很多flash的安全策略,那么当策略没配好出现安全问题时,我们如何实现flash跨站呢。
场景一:
如果a域下有crossdomain.xml,而且crossdomain.xml的allow-access-fromdomain设置为all,a域可以上传swf文件, html文件的embed标签allowscriptaccess属性为sameDomain或者always,那么我们就可以上传一个包含恶意as脚本的swf文件,从而造成一次flash跨站。下面是一个弹出cookie的swf文件(ie无效)
http:/www.xxx.com/flash_xss/test.swf

场景二:
a域下已经有一个swf文件,html文件的embed标签allowscriptaccess属性为sameDomain或者always,而且这个swf可以接受外界的参数,那么我们就可以通过给swf传递恶意的参数从而形成基于flash的反射型跨站。具体案例:
http://www.xxx.org/search.php?q=flash+xss

常用工具

a) flash 8.0
Flash 8.0包含了许多种功能,如预置的拖放用户界面组件,可以轻松地将 ActionScript 添加到文档的内置行为,以及可以添加到媒体对象的特殊效果。这些功能使 Flash 8.0不仅功能强大,而且易于使用。可以在这里找到关于flash 8.0的使用教程,点击查看。这里是一个可以执行as脚本的swf的例子:

b) SWFScan
可以使用 SWFScan进行反编译,这样就可以源码级别的swf,可以进行白盒分析。

 

标签:总结,xml,www,Flash,crossdomain,flash,swf,安全,com
来源: https://www.cnblogs.com/-qing-/p/10930977.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有