使用方法:F12键 启动连发/关闭连发

Flash应用程序安全全攻略(组图)

(2017-12-04)

  Adobe的Flash技术已经变得越来越流行,现在它不仅用于创建动画和广告,而且还用来开发复杂的互联网应用软件。

  一、XSS威胁

  从事Web应用程序的开发或者测试工作的人都知道,Web应用程序有一个常见的安全漏洞,即通常所说的跨站点脚本攻击(XSS)。一般地,如果一个应用程序接受不可信任的源提供的恶意代码,并且在没有对这些数据进行消毒处理的情况下直接将其返回给毫无防备的用户的话,就会发生XSS。虽然Flash应用程序对XSS及其他类型的安全威胁也没有免疫能力,但是web管理员和Flash应用程序开发人员却能够通过采取相应的安全措施来提高这种新兴技术的安全性。

  一般情况下,进行跨站点脚本攻击时,攻击者需要将恶意脚本代码(诸如t或者VBt代码)注入到Web应用程序中,这通常是通过哄骗用户单击一个链接或者访问一个邪恶的网页来完成的。随后,该web应用程序将在受害者的web会话的上下文中显示并执行注入的代码。这种攻击通常能导致用户帐户失窃,但是却不会导致执行命令,除非同时利用了浏览器的安全漏洞。因为SWF程序可以嵌入到网站中,并对HTMLDOM(文档对象模型)有完全的访问权,所以可以通过利用它们来发动XSS攻击。想像一个显示第三方Flash广告的免费电子邮件web服务:一个恶意的广告商可以创建一个恶意的SWF应用程序来劫持您的电子邮件帐号,以便发送垃圾邮件。默认时,FlashPlayer对同域的DOM具有完全的访问权限。

  下面介绍针对SWF应用程序的XSS攻击的基本流程。第一步,攻击者必须首先设法将代码注入到应用程序中,以便让代码重新显示给其他用户。Adobe为程序员提供了各式各样的用户界面组件,诸如组合框、单选按钮以及文本字段等,它们的用法跟HTML表单对象极为相似。此外,让SWF应用程序接受从外部输入的参数的方法也很多。

  我们可以使用 < T > 和< d >标签将属性FlashVar嵌入到一个HTML文档中。

  图1

  此外,还可以直接通过URL传入数据:

  图2

  另外,可以利用类LoadVars来装载外部数据。

  图3

  对于Actiont2来说,FlashVars会被自动导入到Flash应用程序的变量空间,但是在Actiont3中,加载外部参数时需要额外的代码来完成。一个常见的错误是,从FlashVars或者URL参数接受数据后,没有经过恰当的输入验证就直接将它们传递给了与浏览器直接通信的那些函数了。Actiont2中的函数getURL以及Actiont3中的函数navigateToURL具有将指定的URL装载到一个浏览器窗口的能力。可以考虑一下以下Actiont代码:

  图4

  该代码直接利用一个来自外部源的变量来调用函数getURL,这会将用户重定向至指定的URL。例如,攻击者可能会建立如下所示的请求:

  图5

  发出该请求之后,会弹出一个t警告框,并显示站点cookie的内容。Cookie经常用于存储敏感的帐户数据,诸如会话标识符等。DOM是一种标准对象模型,用来以树状结构表示HTML;DOM可被t代码用于动态刺探或者修改HTML页面。可以考虑下面的t代码,它将更改在这个HTML页面上的第一个图像的属性source。属性source被修改后,在该页面上显示的图像也将随之改变。

  图6

  攻击者常用的一种手法是,通过修改HTMLDOM插入一幅新的图像,并让该图像的属性source指向在攻击者所控制的服务器上的一个文件,同时将cookie内容作为一个参数。通过这种方法,攻击者只要监视他的计算机的日志就能够获取cookie数据。如果其中含有会话id的话,攻击者就能够完全控制用户的帐户,直至会话到期为止。还有一个Actiont函数可用于发动XSS攻击,它就是fscommand。SWF文件可以通过这个fscommand函数跟FlashPlayer或者托管FlashPlayer的程序进行通信。通常情况下,FlashPlayer会驻留于一个Web浏览器中,但是它也可以位于其他能够托管ActiveX控件的程序中。函数fscommand由两个部分组成:一个命令和一个参数。下面的fscommand函数将发送一个changeText命令,该命令的参数是由FlashVar来指定的。

  图7

  清单 1中的t代码因此能留驻在处理SWF应用程序发送的命令的HTML文档中。它只是取得参数,然后修改由text指定的HTML元素。开发人员应该注意从用户那里接收的、用于fscommand函数的输入数据的类型,以及各参数在HTML文档中是如何使用的。

  清单 1. 接收fscommand的代码

Flash应用程序安全全攻略(组图)

 
 
图8

  清单 2. 简单的密码检查代码

Flash应用程序安全全攻略(组图)

 
 
图9

  上述的示例代码为攻击者直接向DOM注入HTML或者脚本代码提供了方便之门,例如,下面的请求将包含并执行一个存放在远程主机上的t文件。

  图10



友情链接/网站合作咨询:

tj