您现在的位置是:首页 >学无止境 >【网络安全】mysql数据库提权网站首页学无止境

【网络安全】mysql数据库提权

边缘拼命划水的小陈 2024-06-17 10:19:17
简介【网络安全】mysql数据库提权

数据库提权适用场景

当利用系统溢出未达到提权目的则可以利用数据库进行提权

系统溢出提权:https://blog.csdn.net/qq_41158271/article/details/130510463?spm=1001.2014.3001.5501

前提条件

1. 数据库服务启动
2.知道数据库最高权限的账号密码

提权步骤

服务探针
信息手机
权限利用
获取权限

如何探查数据库服务是否启动

  1. 通过探针判断有数据库相关的服务
  2. 通过端口扫描看是否开启对应端口
  3. 通过命令段看是否开启相关服务
  4. 通过浏览文件或文件夹判定是否安装相关数据库

常见数据库端口
MySql数据库 ,默认端口是: 3306;
Oracle数据库 ,默认端口号为:1521;
Sql Server数据库 ,默认端口号为:1433;
DB2数据库, 默认端口号为:5000;
PostgreSQL数据库, 默认端口号为:5432;
Redis数据库,默认端口号:6379;
Memcached数据库,默认端口号:11211 ;
MongoDB数据库,默认端口号:27017;

mysql提权

mysql 获取数据库最高权限账号密码方法

1.读取网站配置文件

在这里插入图片描述

2. 读取数据库存储或备份文件

获取存储账号密码的MYD文件

原理:
mysql数据库密码存在于mysql.user表中

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 脚本暴力破解

工具爆破属于远程连接爆破,而root用户不支持外联,所以得使用脚本上传到被攻击服务器上进行爆破
什么语言开发的就找什么语言的脚本

在这里插入图片描述

利用udf提权

udf定义

UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充。

udf提权原理

主要是通过udf对mysql功能进行功能拓展,让mysql拥有执行shell命令的功能,而root用户执行sql的权限是system权限,所以只要sql语句可以执行shell命令时,提权就成功了
例子:select sys_eval(‘dir’);

udf常用函数

sys_eval () #执行任意系统命令,并将输出返回 本次提权用到的函数
sys_exec () #执行任意系统命令,并将退出码返回
sys_get () #获取一个环境变量
sys_get () #创建或修改一个环境变量

1. 获取mysql版本号
select version();

在这里插入图片描述

2.udf.dll放置到被攻击服务器中

情况1:mysql版本小于5.1
需要把udf.dll放置系统目录C:Windows 或C:Windowssystem32
情况2:mysql版本大于5.1
udf.dll文件必须放置在mysql安装目录的libplugin文件夹下,该目录默认是不存在的,
方法一:使用webshell找到mysql的安装目录,并在安装目录下创建LibPlugin文件夹
方法二使用NTFS流创建
数据库安装目录查找方式select @@basedir;

udf.dll获取方式:

sqlmap中集成了lib_mysqludf_sys库文件,使用对应版本
在这里插入图片描述
解码:

python3 cloak.py -d -i 你的地址dataudfmysqlwindows64lib_mysqludf_sys.dll_
创建自定义函数,执行命令
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';
# sys_eval为引入的函数,lib_mysqludf.dll是导入的dll文件名称

然后就可以使用system权限执行命令了

select sys_eval('sysinfo')

利用MOF提权

此方式成功率较低
可参考文章https://www.cnblogs.com/xishaonian/p/6384535.html

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。