UDF提权

slug
series-status
status
summary
date
series
type
password
icon
tags
category

UDF提权

什么是udf

udf 全称为:user defined function,意为用户自定义函数;用户可以添加自定义的新函数到Mysql中,以达到功能的扩充,调用方式与一般系统自带的函数相同,例如 contact(),user(),version()等函数。
udf 文件后缀一般为 dll,由C、C++编写

udf在渗透中的作用

在一般渗透过程中,拿下一台windows服务器的webshell时,由于webshell权限较低,有些操作无法进行,而此时本地恰好存在mysql数据库,那么udf可能就派上用场了;由于windows安装的mysql进程一般都拥有管理员权限,这就意味着用户自定义的函数也拥有管理员权限,我们也就拥有了执行管理员命令的权限,这时新建管理员用户等操作也就轻而易举了,大多数人称为这一操作为udf提权,其实表达不够准确,应该称为通过mysql获得管理员权限。

利用条件

利用udf的条件其实还是挺苛刻的
mysql用户权限问题
获得一个数据库账号,拥有对MySQL的insert和delete权限。以root为佳。
拥有将udf.dll写入相应目录的权限。

数据库版本问题

udf利用的其中一步,是要将我们的xxx.dll文件上传到mysql检索目录中,mysql各版本的检索目录有所不同:
路径
MySQL < 5.0
导出路径随意;
5.0 <= MySQL< 5.1
需要导出至目标服务器的系统目录(如:c:/windows/system32/)
5.1 < MySQL
必须导出到MySQL安装目录下的lib\plugin文件夹下
一般Lib、Plugin文件夹需要手工建立(可用NTFS ADS流模式突破进而创建文件夹)

利用过程

由于sqlmap已经集成了这个功能,所以我们直接使用sqlmap里的模块即可。
在 \sqlmap\data\udf\mysql\windows\64目录下存放着lib_mysqludf_sys.dll_
notion image
但是sqlmap中自带的shell以及一些二进制文件,为了防止误杀都经过异或编码,不能直接使用
可以利用sqlmap 自带的解码工具cloak.py,在sqlmap\extra\cloak中打开命令行,来对lib_mysqludf_sys.dll_进行解码在,然后在直接利用,输入下面的命令
notion image
接着就会在\sqlmap\data\udf\mysql\windows\64目录下生成一个dll的文件lib_mysqludf_sys.dll,这个我们就可以直接拿来利用
之前我们已经拿到了​一个靶场的服务器的低权限用户的shell:
notion image
根据路径判断该服务器为linux服务器,因此后续需要上传.so的udf提权文件至数据库的plugin路径。

实施

  1. 找到数据库名称,密码
  1. 查找plugin路径
  1. 上传udf文件
  1. 执行系统命令
首先在配置文件找到了数据库登陆信息
notion image
登陆数据库,查找plugin路径
notion image
随后上传之前的提权文件至该路径下
notion image
之后在数据库输入命令,执行提权文件
notion image
这里报错是因为之前已经有人执行过了。
随后即可执行系统命令
notion image
文字内容参考文章:
Loading...

尚未开始
更新中
近期核心
已完结
已弃更

© River 2021-2025