最近在微信群中看到有人分享了新的关于UDF提权的文章,在文章开头处提到了MySQL 5.7,之后群中又分享了社区中的译文版本,既然在开头处看到了MySQL的最新版本5.7.21,那么我不得不继续往下看。
原文地址:https://osandamalith.com/2018/02/11/mysql-udf-exploitation/
译文版本:https://xianzhi.aliyun.com/forum/topic/2167?accounttraceid=85dbd2c9-8021-4125-bf50-c7be4b510695
看完整篇文章之后,我重新在高版本的MySQL上测试了一下许久不用的udf,想看看在什么情况下能提权成功,并且各个版本的MySQL在默认安装的情况下是什么样子的。环境将有三个分别是MySQL5.5.53,5.6.10,5.7.21 操作系统为win7
在高版本中有个参数至关重要,就是secure-file-priv,这个参数限制了MySQL的导出;该参数为NULL时不允许导出、该参数为空时允许在任意文件夹中导出、该参数为某文件夹时允许在该文件夹中导出。这个参数在各个版本中的表现如下:
MySQL5.5版本:my.ini中无此参数,查询该参数情况为NULL
MySQL5.6版本:my.ini中无此参数,查询该参数情况为空。
MySQL5.7版本:my.ini中有此参数,查询该参数情况为数据目录下的Upload文件夹。
该参数可以在my.ini中进行修改,“secure-file-priv=”
现在将最新版本5.7.21上的该参数修改为空,
尝试导出udf到插件目录,可以看到导出失败,当MySQL默认安装在C盘时,由于权限问题不能往该插件目录中写入。
安装MySQL5.6到D盘中,再次尝试导出udf到插件目录,这时能够成功的导出(这里与版本无关,只是上面放了5.7的图,这里放了5.6的图)
通过测试MySQL5.5、5.6、5.7版本,想要知道当前环境能不能成功导出udf文件(管理员没有额外修改过用户权限的情况),可通过两个查询达到,分别是
通过select @@basedir查看安装目录;(不在C盘)
通过show variables like ‘%secure%’;查看参数当前状态。(为空)
在这样的情况下将有大概率能使用udf提权成功。
关于之后的怎么使用我想大家都很清楚了,在这就不赘述了。