flash-XSS

一、Flash XSS 是什么?

Flash XSS 是一种利用 Flash 文件(.swf)中不安全脚本调用(如 getURL()ExternalInterface.call())来 执行恶意 JavaScript 代码的 XSS 攻击方式


二、攻击原理

正常情况下:

Flash 文件可以通过 getURL() 打开网页,例如:

getURL("https://example.com");

攻击者利用时:

如果 Flash 接收外部参数,比如:

getURL(_root.link);

然后页面这样使用这个 Flash:

<embed src="vuln.swf?link=javascript:alert(document.cookie)">

那么 Flash 会执行:

javascript:alert(document.cookie)

于是触发了 XSS 漏洞


三、漏洞条件

要能造成 Flash XSS,需满足以下条件:

条件描述
1️⃣ Flash 中存在不安全函数getURL()ExternalInterface.call()
2️⃣ Flash 参数可控Flash 文件从 URL 获取参数,未做过滤
3️⃣ 浏览器未阻止 Flash 执行旧版浏览器 / 人为开启 Flash 插件
4️⃣ Flash 文件未加密或未上锁攻击者可修改、重写或伪造


四、攻击方式分类

攻击方式描述
1. 参数注入getURL(_root.param) 接收攻击者控制的参数
2. 本地 swf 注入上传恶意 swf 文件,诱导访问
3. 外链 swf 引用页面嵌入远程 swf,例如 embed src="evil.swf"
4. 反射型 XSSURL 中的参数直接被 Flash 使用并执行 JavaScript


 五、复现流程(示例)

❗需本地 Flash Player 支持,可以用 Flash 播放器或者 IE 旧版本(如 IE 8)

示例 swf 代码(ActionScript 2.0):

// Flash中获取参数并调用 
var link = _root.link; 
getURL(link, "_blank"); 

 使用方式:

构造页面调用:

<embed src="xss.swf?link=javascript:alert(document.domain)" 
width="300" height="200"> 

当用户打开该页面时,Flash 会执行:

alert(document.domain); 

漏洞成功!


六、工具与验证

  • 工具:

    • swfmill:查看 swf 结构

    • JPEXS Free Flash Decompiler:反编译 swf

    • Burp Suite:劫持 swf 请求和参数

  • 可复现平台:

    • OWASP BWA 虚拟机

    • DVWA 旧版本

    • 或自行搭建 Flash 页面测试


七、真实案例

Twitter Flash XSS 漏洞(2008)

  • 攻击者上传包含 getURL("javascript:...") 的 swf 文件

  • 利用 embed 引诱用户点击

  • 成功获取了用户 cookie,甚至可伪造推文


八、防御方式

防御点措施
禁用 Flash最根本,现代浏览器已默认禁用
参数过滤不允许传入 javascript:、HTML 标签等敏感字符
Flash 加密与签名禁止篡改 swf 内容
CSP 限制使用 Content-Security-Policy 禁止执行 JavaScript: 协议
使用 HTML5 替代 Flash防止旧技术带来的新漏洞


九、总结

Flash XSS 是一种已逐渐消失但曾非常危险的 XSS 类型,攻击者利用 swf 文件中的函数执行 JavaScript,造成脚本注入,目前已基本被淘汰但依然值得安全研究者掌握其历史与原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值