专栏首页漏洞知识库那些年我们一起学XSS - 14. Flash Xss入门 [navigateToURL]

那些年我们一起学XSS - 14. Flash Xss入门 [navigateToURL]

漏洞知识库

网络安全/渗透测试/代码审计/

关注

Flash Xss入门 [navigateToURL]

接下来,我们将讲解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文件,不利于我们后续的漏洞查找,所以我们需要输入某个关键词来进一步缩小范围。这里我列举一些寻找关键词的方式。 3.1 已知存在缺陷的FLASH文件名或参数名,如:swfupload,jwplayer等 3.2 多媒体功能的FLASH文件名,如:upload,player, music, video等 3.3 调用的外部配置或数据文件后缀,如: xml, php 等 3.4 前期经验积累下来的程序员特征参数名用词,如: 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】来看看。

6. 我们看看http://v.qq.com/doco/pic.xml的内容,对应着FLASH来看。

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都保存出来,保存为文本文件。

如上图,我们可以看到AS代码具有目录结构,这种是AS3的。如果不是这样目录的样子,则是AS2的代码。 由于我们要定位的是使用到 link 的代码。我们打开保存的as代码,进行搜索。

可以看到,当点击图片时,直接将数据里的link作为参数传递到了 URLRequest中。 11. 既然如此,我们把http://v.qq.com/doco/pic.xml 给下载下来, 将xml文件里的 <link> 部分修改一下。

12. 上传修改后的pic.xml到我们自己的服务器。

13. 这样一来, 腾讯的http://imgcache.qq.com/liveportal_v1/swf/carousel.swf 就会跨域加载我们的 http://itsokla.duapp.com/pic.xml 文件。

14. 既然是跨域加载,有必要说点基础知识。FLASH跨域请求的流程大致如下:

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. 最后,看看我们的效果。点击图片时,触发。

危害较小,仅供学习。

本文分享自微信公众号 - 漏洞知识库(HackedBug)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 50道常见的js面试题

    string, boolean, number, undefined, function, object

    用户1462769
  • 面试必问:Spring 循环依赖的三种方式

    引言:循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Sp...

    JAVA葵花宝典
  • vue post请求参数在controller层无法封装问题

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 入门 Node.js Net 模块构建 TCP 网络服务

    想做一个简单的 Web API,这个时候就需要搭建一个 Web 服务器,在 ASP.NET 中需要 IIS 来搭建服务器,PHP 中需要借助 Apache/Ng...

    五月君
  • npm 及vue,router,webpack安装 快速起步

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • Java并发面试题

    1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。2、使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume...

    一个优秀的废人
  • 聊聊nacos address的getCluster

    nacos-1.1.3/address/src/main/java/com/alibaba/nacos/address/controller/ServerLis...

    codecraft
  • mybatis批量增、删、改(更新)操作oracle和mysql批量写法小记

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    eguid
  • 在Creator3D中使用protobuf的快速解决方法!

    在这里分享一下在 Creator 3D 中集成 protobufjs 遇到的问题,如果你在 Creator 3D 中使用其它JS三方库,也会有一定的帮助。

    张晓衡
  • 一起学Excel专业开发20:Excel工时报表与分析系统开发(3)——启动与关闭

    对于独立式应用程序,在启动时首先进行版本检查和一些必要的验证,以确保能正确地运行应用程序;然后,保存Excel在应用程序启动前的环境状态,以便在应用程序关闭时恢...

    fanjy

扫码关注云+社区

领取腾讯云代金券