UDF 提权

肚子难受了两天,躺了两天

关于 UDF ,我当时第一想到的是 sqlmap 里的 -os-shell

这两者之间又有怎么样的区别?

经过我查了一番资料

UDF 全称为 User Defined Functions ,翻译过来就是用户可自定义函数.

UDF 适用于只知道root 账户密码,且前提是secure_file_priv 为空,且 MySQL 有写入和删除权限

sqlmap里的-os-shell 也是要有一样的前提,但是实现的原理不同,主要是用 into out_file 的命令,偷偷写了一份文件上传,又偷偷上传了包含可以执行各种函数的 eval() 的文件.

这二者都需要知道文件的绝对位置

可以用下面两个 MySQL 语句来知道文件的位置

show variables like 'plugin%';
#查找 plugin 所在位置
select @@basedir;
#查看 mysql 所在目录


部署软件:小皮助手

MySQL 查询工具: phpMyAdmin

MySQL 版本: 5.7.26

我们要进行检测是否有条件进行渗入

  1. 检测secure_file_priv是否为空(不是为null)
show global variables like 'secure%';

如果出现下面这个情况那么就是不可以

null就是不允许

所以放弃吧,本文结束(?

开玩笑啦,没有条件也要创造条件上!

既然是基于本机,就改下配置文件吧

在 [mysqld] 里面插入这句话即可

secure_file_priv=

重启 MySQL 服务,出现以下截图内容就是成功

  1. 检测软件版本
show variables like '%compile%'; 

我们可以看出系统和软件都是 x64 的

我们只需要获取 x64 的udf.dll 即可

满足条件了,又该如何进行提权呢?

  1. 获取 udf.dll

有两种办法让 lib/plugin 里面有 udf.dll,

第一种办法是通过 webshell 将 udf.dll 拖进去

第二种办法是让 MySQL 写入 16进制的文件

由于实在本机上运行,以上两个办法就先不写

获取 udf.dll , kali里面有编译好的dll文件

只要去以下路径就可以

/usr/share/metasploit-framework/data/exploits/mysql

在这里本人用的是基于 wsl2 的 kali Linux (不得不说,传文件挺好用的)

由于 MySQL 是5.7版本,所以我们需要创建 lib/plugin 文件夹

把 udf.dll 文件放入进去

  1. 创建自定义函数
create function sys_eval returns string soname 'udf.dll'; 
#udf.dll取决于你放入文件的名称

然后再执行 sql 语句就可以了

SELECT sys_eval ('whoami');

但是结果应该是当前的用户

但是实际出的却是 0x5f…

这是触发了微软某种保护机制吗?

希望有大佬能告诉我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值