1、前言
最近遇到udf提权,几经周折终于搞懂了。感觉挺有意思的,渗透思路一下子就被打开了。
2、什么是udf提权
udf 全称为'user defined function',意思是'用户自定义函数'。用户可以对数据库所使用的函数进行一个扩展(windows利用dll文件,linux利用so文件),那么我们就可以利用这个特点,往MySQL里面添加一个可以执行系统命令的函数即可。
3、提权条件
(1)获取了MySQL的控制权,也就是知道MySQL账号和密码,并且能登录上去。
(2)MySQL具有读写的权限,即secure_file_priv的值为空才行。
(3)MySQL服务以root用户运行,如果是以普通用户运行的话,那么提权之后的权限也是普通用户的权限。
值得注意的是,不同版本的MySQL提权方式略有不同。
MySQL版本大于5.1,扩展文件必须放在MySQL安装目录的lib\plugin文件夹下。(plugin目录下存放的是扩展文件,plugin文件夹默认不存在,需要自己创建)
mysql版本<5.1 需要将扩展文件放在 C:\windows\或C:\windows\system32
4、提权过程
这里我就用Vulnhub靶场的 raven1靶机来演示,因为这个靶机刚好可以进行udf提权。这里直接快进到拿到shell了,如何getshell就不说了。
输入命令查看MySQL,发现是root身份运行的。
ps aux | grep "mysql"
<