Raven2靶机:Hacking Writeup

2019-10-13  本文已影响0人  N8_xEnn7nA1

Raven2 是之前的 Raven 靶机系列的第2关。目标也是获取靶机上的4个flag。

目录

  1. 主机发现,端口扫描
  2. 80 端口和 WordPress CMS 的发现
  3. 枚举目录,查找 vendor 目录
  4. 发现文件 PATH 并从中获得 flag1
  5. 发现文件 VERSION 并从中获取 PHPMailer 的版本
  6. 利用 PHP 5.2.6 版本的 RCE 漏洞
  7. 对 exploit 进行适当修改,以便成功利用
  8. 通过发送的 payload 来获取 netcat shell
  9. /var/www 中获取 flag2
  10. 在 wordpress 目录下查找 wp-config.php 文件,并从中读取数据库密码
  11. 使用 LinEnum.sh 脚本枚举 Linux 活动进程
  12. 使用 exploit-db 上名为 1518.c 的 UDF 动态库漏洞利用程序进行提权
  13. find 程序设置 sticky 位
  14. 获取 root 访问权限
  15. /root 下获得 flag4
  16. 通过遍历系统找到 flag3

让我们开始 hacking 吧。

首先使用 netdiscover 发现网络上的主机,本例中靶机的 IP 为:192.168.166.200

image.png

使用 nmap 对靶机进行扫描,可以看到靶机打开了3个端口:2280111

image.png

于是我们把目光放到 80 端口,可以看到一个 Raven Security 的网站。

image.png

使用 dirb 工具对站点进行目录扫描,可发现存在 vendor 目录

image.png

访问 http://192.168.166.200/vendor/ 发现,该路径存在目录遍历:

image.png

查看 PATH 文件可得到 flag1

image.png

在该路径下,还有一个文件名值得注意,那就是 VERSION,查看该文件可看到一个版本号:5.2.6

image.png

再看 /vendor 目录下,还有几个文件名含有 phpmailer 的文件,如 PHPMailerAutoload.php ,可确定 5.2.6PHPMailer 的版本号。
于是使用 searchsploitexploit-db 中搜索 PHPMailer 相关的 exp

image.png

这里我们选择 40974.py

image.png

修改 40974.py,如下:

image.png

然后运行 40974.py

image.png

然后用 nc 监听本机的 443 端口:

image.png

此时,访问 http://192.168.166.200/shell.php,本机会得到一个反向 shell

image.png

利用 Python 的 pty 模块获得一个 bash shell

image.png

/var/www/flag2.txt 中读取 flag2

image.png

LinEnum.sh 脚本想办法导入到靶机中,该脚本可以枚举各种 Linux 系统的各种信息。

image.png

执行 LinEnum.sh 脚本,可以看到靶机上运行着 MySQL 服务:

image.png image.png

另外,通过 ps -ef |grep mysql 查看进程得知,MySQL 服务使以 root 权限启动的,因此可以想到等会可以利用 MySQL UDF 进行提权。更多信息见:https://legalhackers.com/advisories/mysql-exploit-remote-root-code-execution-privesc-cve-2016-6662.html

image.png

使用 searchsploit 从 exploit-db 中搜索相关的 exploit :

image.png

这里选择用 1518.c, 下载它:

image.png

打开 1518.c 可看到里面有使用说明:

image.png

按照使用说明,使用 1518.c 进行编译,生成共享库 1518.so,并导入到靶机中。

接着,为了进入 MySQL shell,我们进入 /var/www/html/wordpress 目录下找到 wp-config.php 文件,因为里面记录了数据库的用户名/密码:

image.png

于是,进入 MySQL shell:

依次执行下面的语句:

use 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 位

image.png

此时,回到 /tmp 目录,使用 find 命令来获取 root shell

image.png

查找并获取 flag4

image.png

查找并获取 flag3

image.png image.png
上一篇下一篇

猜你喜欢

热点阅读