天天看点

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

本节书摘来自异步社区《xss跨站脚本攻击剖析与防御》一书中的第6章6.4节利用flash进行xss攻击剖析,作者邱永华,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.4 利用flash进行xss攻击剖析

xss跨站脚本攻击剖析与防御

利用嵌入web页面中的flash进行xss有一个决定因素:allowscriptaccess属性。allowscriptaccess是使用或

下面是一个简单的示例:

http://www.test.com/flashxss.swf allowscriptaccess=always>

allowscriptaccess属性控制着flash与html页面的通信,可选的值有3个:

always:允许随时执行脚本操作

never:禁止所有脚本执行操作

samedomain:只有在flash 应用程序来自与html页相同的域时才允许执行脚本操作

其属性值在flash player 7及之前版本中预设是always,代表flash可以调用相同或不同domain的javascript函数。flash player 8或之后预设是samedomain,也是现在多数flash应用的默认状态,但是经常能看到有些程序允许将该选项设置为always。

allowscriptaccess实际上是flash权限机制的api,前面提过的security.allowdomain()也是其中一个。这些机制可以用于更改、调用应用程序的安全性环境。

权限机制api如图6-20所示。

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

主机应用程序的本机方法权限机制api如图6-21所示。

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

而allowscriptaccess和allownetworking都属于html参数权限机制api如图6-22所示。

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

allownetworking属性控制swf 文件对网络功能的访问,因此对csrf攻击有着至关重要的影响,稍后的内容会有讲解。

更多关于flash权限机制api及其安全性的内容,可参看adobe的官方白皮书adobe flash player x security。

假设在引入flash文件时,html页面的或

在actionscript中可以使用geturl()函数执行脚本代码。

actionscript代码如下:

geturl('javascript: alert(123);');

把编译完成的swf文件嵌入html文件中,代码如下:

这时,直接浏览上述页面就会弹出一个对话框。

除了使用geturl()方法外,还可以使用actionscript 3.0中的externalinterface类来执行javascript脚本。

externalinterface类是flash与javascript 交互的枢纽,可以实现javascript与 actionscript之间的所有通信。通过externalinterface类的call()方法可以直接调用外部的javascript。

externalinterface.call()的语法如下:

externalinterface.call(functionname:string,...arguments):*

参数说明:

functionname:要调用的javascript函数名

arguments:参数,可选

externalinterface.call()允许在actionscript中调用javascript,有以下几种方式。

(1)传统用法。

第1个参数是javascript中的函数名,其他是要传递的参数。

externalinterface.call("alert", "你好!");

结果如图6-23和图6-24所示。

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

(2)直接执行javascript语句。

直接把javascript语句写入参数内:

或采用如下形式:

(3)使用xml格式。

用xml在actionscript 3.0中嵌入javascript,更方便编写xss代码,方法如下:

图6-25所示为执行效果。

《XSS跨站脚本攻击剖析与防御》—第6章6.4节利用Flash进行XSS攻击剖析

(4)调用外部javascript。

以上方式都是通过调用容器中定义的javascript代码来完成,这样在进行xss时会带来一定的不便。这时可以尝试动态加载外部的javascript脚本:

以上种种都是利用flash执行xss的方法。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

继续阅读