# 14\. Flash Xss 入门 [navigateToURL]
> 来源:[14\. Flash Xss 入门 \[navigateToURL\]](http://www.wooyun.org/bugs/wooyun-2010-016512)
## 简要描述
接下来,我们将讲解 Flash Xss。由于乌云及社会各界的白帽子的上报,腾讯目前已经对绝大多数可能存在问题的 Flash 进行了修复。 使得我在寻找真实案例时着实麻烦了不少。但是为了使得本教程足够完善和系统,我还是很艰难的找出了一些可以参考的例子。例子本 身危害可能不大,但是希望能够借助例子给新手们描述清楚比较基本的东西。
Flash 的 actionscript 脚本目前网络上存在 2 种版本,即 2.0 与 3.0,本次教程先以 as3.0 为例。同时教程还会在如何使用搜索引擎搜 索,如何查找关键词及构造利用代码方面进行详细的讲解。
## 详细说明
1\. 首先,第一步,我们需要找到存在缺陷的 FLASH 文件。如何找到这类文件呢?最好的办法,当然是 GOOGLE 搜索。但是其 实很多人是不太会用搜索引擎。或者知道怎么用,但是不知道该如何搜索关键词。因而教程的开始,我们来说一说,如何搜索关键词。
2\. 基本语句肯定是 `site:qq.com filetype:swf` 意思是,限定域名为 qq.com 文件类型为 FLASH 文件。
3\. 显然这样会搜索出很多 FLASH 文件,不利于我们后续的漏洞查找,所以我们需要输入某个关键词来进一步缩小范围。这里我列举一 些寻找关键词的方式。
1\. 已知存在缺陷的 FLASH 文件名或参数名,如:swfupload,jwplayer 等
2\. 多媒体功能的 FLASH 文件名,如:upload,player, music, video 等 3.3 调用的外部配置或数据文件后缀,如: xml, php 等
3\. 前期经验积累下来的程序员特征参数名用词,如: callback, cb , function 等
4\. 结合以上经验,本例使用其中第三条: 我们搜索: site:qq.com filetype:swf inurl:xml 可以找到这个 FLASH
```
http://imgcache.qq.com/liveportal_v1/swf/carousel.swf?v=20101111&dp=http://v.qq.com/doco/pic.xml
```
5\. 如果你对 FLASH 有一定了解或者你天资聪慧的话,通过以上地址,你或许能猜到这个 FLASH 会调用 http://v.qq.com/doco/pic.xml 这个 XML 文件的数据,为了看看是什么数据,我们可以使用抓包软件【这里我使用的是 charles web proxy】来看看。
![image](https://box.kancloud.cn/2016-03-23_56f25042e01cf.jpg)
6\. 我们看看 http://v.qq.com/doco/pic.xml 的内容,对应着 FLASH 来看。
![image](https://box.kancloud.cn/2016-03-23_56f2504301178.jpg)
7\. 这里我们重点关注的是 xml 里的`<link>`结点。也就是当我们点击图片时,会跳转到 link 所指向的地址。
8.接着我们先说下基础知识。要实现上面点击图片,打开链接的功能,在 FLASH 里通常以以下代码来实现的。 当图片点击时执行 函数 A
函数 A 内容如下:
```
//as3.0 版本
navigateToURL(new URLRequest(link), "_self");
//as2.0 版本 getURL(link,"_self");
```
其中 link 就是被打开的链接。
9\. 但是这里存在一个问题,如果 link 是 "javascript:alert(1)" 那么就可以执行 JS 代码了。这里的点击执行代码的效果类似于网页里的
```
<a href="javascript:alert(1)">点我弹出 1</a>
```
10\. 基于以上基础知识,我们可以先来反编译一下腾讯的 FLASH 文件,看看是不是上面这样的。 这里我用到的反编译软件是 actionscript viewer 2009。
把下载好的 FLASH 文件,拖到软件里,然后把 AS 都保存出来,保存为文本文件。
![image](https://box.kancloud.cn/2016-03-23_56f250431b3bb.jpg)
![image](https://box.kancloud.cn/2016-03-23_56f25043317a7.jpg)
如上图,我们可以看到 AS 代码具有目录结构,这种是 AS3 的。如果不是这样目录的样子,则是 AS2 的代码。 由于我们要定位的是使用到 link 的代码。 我们打开保存的 as 代码,进行搜索。
可以看到,当点击图片时,直接将数据里的 link 作为参数传递到了 URLRequest 中。
11\. 既然如此,我们把 http://v.qq.com/doco/pic.xml 给下载下来,
将 xml 文件里的 `<link>` 部分修改一下。
![image](https://box.kancloud.cn/2016-03-23_56f250434562b.jpg)
12\. 上传修改后的 pic.xml 到我们自己的服务器。
![image](https://box.kancloud.cn/2016-03-23_56f250435993f.jpg)
13\. 这样一来, 腾讯的 http://imgcache.qq.com/liveportal_v1/swf/carousel.swf 就会跨域加载我们的 http://itsokla.duapp.com/pic.xml 文件。
14\. 既然是跨域加载,有必要说点基础知识。 FLASH 跨域请求的流程大致如下:
![image](https://box.kancloud.cn/2016-03-23_56f250436f441.jpg)
15\. 因而,我们要允许来自 imgcache.qq.com 的 FLASH 文件,访问我们的 xml 文件才行。
在我们自己网站的根目录下,放置一个 crossdomain.xml
```
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*.qq.com" />
</cross-domain-policy>
```
16\. 最后,看看我们的效果。点击图片时,触发。
![image](https://box.kancloud.cn/2016-03-23_56f2504381e55.jpg)
## 修复方案
对 XML 中传入的 link url 进行正则判断 或者限制加载第三方网站的 XML 文件
- 1. 什么都没过滤的入门情况
- 2. 输出在&lt;script&gt;&lt;/script&gt;之间的情况
- 3. 输出在 HTML 属性里的情况
- 4. 宽字节复仇记 [QQ 邮箱基本通用]
- 5. 反斜线复仇记
- 6. 换行符复仇记
- 7. 宽字节、反斜线与换行符一起复仇记
- 8. Dom Xss 入门 [显式输出]
- 9. Dom Xss 入门 [隐式输出]
- 10. Dom Xss 进阶 [邂逅 eval]
- 11. Dom Xss 进阶 [善变 iframe]
- 12. Dom Xss 进阶 [路径 con]
- 13. Dom Xss 实例 [Discuz X2.5]
- 14. Flash Xss 入门 [navigateToURL]
- 15. Flash Xss 进阶 [ExternalInterface.call 第一个参数]
- 16. Flash Xss 进阶 [ExternalInterface.call 第二个参数]
- 17. XSS 过滤器绕过 [通用绕过]
- 18. XSS 过滤器绕过 [猥琐绕过]
- 19. 存储型 XSS 入门 [什么都没过滤的情况]
- 20. 存储型 XSS 入门 [套现绕过富文本]
- 21. 存储型 XSS 进阶 [猜测规则,利用 Flash addCallback 构造 XSS]