Vulnhub Mercy Walkthrough

Posted ZywOo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vulnhub Mercy Walkthrough相关的知识,希望对你有一定的参考价值。

Recon

首先进行二层扫描。

┌──(kali㉿kali)-[~]
└─$ sudo netdiscover -r 192.168.80.0/24
 Currently scanning: Finished!   |   Screen View: Unique Hosts                        
                                                                                      
 7 Captured ARP Req/Rep packets, from 4 hosts.   Total size: 420                      
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
 -----------------------------------------------------------------------------
 192.168.80.1    00:50:56:c0:00:08      1      60  VMware, Inc.                       
 192.168.80.2    00:50:56:ed:65:ac      2     120  VMware, Inc.                       
 192.168.80.135  00:0c:29:cd:fd:52      3     180  VMware, Inc.                       
 192.168.80.254  00:50:56:ec:ab:13      1      60  VMware, Inc.                       
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sS -p- 192.168.80.135
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-09 03:06 EDT
Nmap scan report for 192.168.80.135
Host is up (0.0028s latency).
Not shown: 65525 closed tcp ports (reset)
PORT     STATE    SERVICE
22/tcp   filtered ssh
53/tcp   open     domain
80/tcp   filtered http
110/tcp  open     pop3
139/tcp  open     netbios-ssn
143/tcp  open     imap
445/tcp  open     microsoft-ds
993/tcp  open     imaps
995/tcp  open     pop3s
8080/tcp open     http-proxy
MAC Address: 00:0C:29:CD:FD:52 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 5.97 seconds

我们注意到80和22端口被过滤了。

Process

相同的,我们还是对samba进行枚举。我们从中发现用户和共享文件夹。

我们访问Web服务,发现是Tomcat服务,值得注意的是,他们将敏感信息泄露在了主页中,且服务器启用了Manager Webapp。

通过访问robots.txt,我们得到了一串base64编码,将其解码我们得到了一串信息。

这说明有用户还在使用弱密码,我们尝试使用弱密码登录samba的共享文件夹。

在.private目录中我们获得了profile文件,其中包含了Web服务器和Knockd的配置。

从上面的文件中我们能知道,如何开启HTTP和SSH端口。所以我们编写脚本,开启相应的端口。

开启HTTP的端口后,我们进行访问,发现robots.txt提示的目录。

我们访问/mercy,网页提示我们,尝试让time不只是显示时间。

访问/nomercy,这是一个RIPS的应用,我们尝试使用searchsploit查找漏洞。

我们尝试利用此漏洞。

成功利用,但是我们并不能通过此漏洞提权,前文tomcat服务器泄露了自己的根目录,我们尝试读取tomcat的配置文件。由下图可见,我们读取了tomcat保存用户信息的配置文件,其中有两个用户,一个用户具有管理权限,另一个则为普通用户,而结合enum4linux,我们能判断另一个用户为Linux的本地用户。

接下来我们尝试登录tomcat的管理后台。在后台中,我们可以上传war包,我们可以手动通过war包获得shell,也可以通过Metasploit平台获得Shell。那么我们这里就使用手动的方法。首先通过msfvenom生成payload。

上传payload,访问指定url触发Reverse Shell。

Privilege Escalation

但当前的Shell并不是交互式Shell,我们需要将当前的Shell升级为交互式Shell。

通过执行python -c \'import pty; pty.spawn("/bin/bash")\',我们就可以使用Python生成一个Shell。

随即我们切换到fluffy用户,并再次升级Shell。

我们在fluffy用户中找到了一个记录时间的文件,根据观察,这好像是一个定时执行的脚本,但我们没有权限查看当前系统的计划任务。

通过访问80端口的/time文件,我们可以印证这一点,再根据前文的提示,我们可以在文件内写入一个反向Shell的命令,等待脚本执行时获得权限。

等待三分钟后,获得Shell。

Vulnhub Bravery靶机 Walkthrough

Bravery

Recon

使用netdiscover对本地网络进行arp扫描。

 ┌──(kali㉿kali)-[~]
└─$ sudo netdiscover -r 192.168.80.0/24
 Currently scanning: Finished!   |   Screen View: Unique Hosts                                                                         
 
 5 Captured ARP Req/Rep packets, from 5 hosts.   Total size: 300                                                                                                
 _____________________________________________________________________________
   IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
 -----------------------------------------------------------------------------
 192.168.80.1    00:50:56:c0:00:08      1      60  VMware, Inc.                                                                                                 
 192.168.80.2    00:50:56:ed:65:ac      1      60  VMware, Inc.                                                                                                 
 192.168.80.131  00:0c:29:5a:0f:b5      1      60  VMware, Inc.                                                                                                 
 192.168.80.133  00:0c:29:b9:af:ac      1      60  VMware, Inc.                                                                                                 
 192.168.80.254  00:50:56:fd:b9:5a      1      60  VMware, Inc.  
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sS -p- -sV 192.168.80.131 
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-07 00:49 EDT
Nmap scan report for 192.168.80.131
Host is up (0.0010s latency).
Not shown: 65522 closed tcp ports (reset)
PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 7.4 (protocol 2.0)
53/tcp    open  domain      dnsmasq 2.76
80/tcp    open  http        Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16)
111/tcp   open  rpcbind     2-4 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
443/tcp   open  ssl/http    Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16)
445/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
2049/tcp  open  nfs_acl     3 (RPC #100227)
3306/tcp  open  mysql       MariaDB (unauthorized)
8080/tcp  open  http        nginx 1.12.2
20048/tcp open  mountd      1-3 (RPC #100005)
37985/tcp open  status      1 (RPC #100024)
44626/tcp open  nlockmgr    1-4 (RPC #100021)
MAC Address: 00:0C:29:5A:0F:B5 (VMware)
Service Info: Host: BRAVERY

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

发现目标靶机开启了DNS、HTTP、HTTPS和Samba、NFS等一系列的服务。

Process

我们首先发现了NFS这个有趣的服务,我们直接尝试挂载到本地。

┌──(kali㉿kali)-[~/Labs/Bravery]
└─$ sudo mount -t nfs 192.168.80.131:/ nfs

┌──(kali㉿kali)-[~/…/Bravery/nfs/var/nfsshare]
└─$ ls
discovery  enumeration  explore  itinerary  password.txt  qwertyuioplkjhgfdsazxcvbnm  README.txt

其中的内容,大部分没有什么作用,但是我们关注到一个奇怪的文件(此处埋下伏笔)。

┌──(kali㉿kali)-[~/…/Bravery/nfs/var/nfsshare]
└─$ cat qwertyuioplkjhgfdsazxcvbnm 
Sometimes, the answer you seek may be right before your very eyes.

NFS中有效的内容不多,此时将我们的目光放到Samba上,目标为Linux机器,要想枚举目标的Samba信息,我们有个得力的工具enum4linux,工具的详细信息

通过enum4linux工具的输出,我们能够获得Linux主机上的用户和共享文件夹(下为部分内容)。

======================================( Users on 192.168.80.131 )======================================
                                                                                                                                       
index: 0x1 RID: 0x3e8 acb: 0x00000010 Account: david    Name: david     Desc:                                                                                    
index: 0x2 RID: 0x3e9 acb: 0x00000010 Account: rick     Name:   Desc: 

user:[david] rid:[0x3e8]
user:[rick] rid:[0x3e9]

 ================================( Share Enumeration on 192.168.80.131 )================================
        Sharename       Type      Comment
        ---------       ----      -------
        anonymous       Disk      
        secured         Disk      
        IPC$            IPC       IPC Service (Samba Server 4.7.1)

我们获得了用户david和rick,以及共享文件夹anonymous和secured。我们首先通过smbclient工具访问共享文件夹anonymous。

┌──(kali㉿kali)-[~/Labs/Bravery]
└─$ smbclient //192.168.80.131/anonymous -U %     
Try "help" to get a list of possible commands.
smb: \\> dir
  .                                   D        0  Fri Sep 28 09:01:35 2018
  ..                                  D        0  Thu Jun 14 12:30:39 2018
  patrick\'s folder                    D        0  Fri Sep 28 08:38:27 2018
  qiu\'s folder                        D        0  Fri Sep 28 09:27:20 2018
  genevieve\'s folder                  D        0  Fri Sep 28 09:08:31 2018
  david\'s folder                      D        0  Tue Dec 25 21:19:51 2018
  kenny\'s folder                      D        0  Fri Sep 28 08:52:49 2018
  qinyi\'s folder                      D        0  Fri Sep 28 08:45:22 2018
  sara\'s folder                       D        0  Fri Sep 28 09:34:23 2018
  readme.txt                          N      489  Fri Sep 28 09:54:03 2018

  17811456 blocks of size 1024. 12839656 blocks available

我们获得了一部分用户和readme.txt,但这些文件夹并没有实际的作用。readme.txt只告诉我们这个samba共享系统可能即将被替换到Sharepoint。那么我们就尝试访问另一个secured文件夹,此时之前埋下的伏笔就起到了作用,它是david账户的密码。在文件夹中我们发现了三个文件。

┌──(kali㉿kali)-[~/Labs/Bravery/smbd]
└─$ cat david.txt 
I have concerns over how the developers are designing their webpage. The use of "developmentsecretpage" is too long and unwieldy. We should cut short the addresses in our local domain.

1. Reminder to tell Patrick to replace "developmentsecretpage" with "devops".

2. Request the intern to adjust her Favourites to http://<developmentIPandport>/devops/directortestpagev1.php.

david.txt文件也是一个伏笔,不过这个靶机无关。其中最为关键的是genevieve.txt文件。其中有一个url值得我们关注。

┌──(kali㉿kali)-[~/Labs/Bravery/smbd]
└─$ cat genevieve.txt 
Hi! This is Genevieve!

We are still trying to construct our department\'s IT infrastructure; it\'s been proving painful so far.

If you wouldn\'t mind, please do not subject my site (http://192.168.254.155/genevieve) to any load-test as of yet. We\'re trying to establish quite a few things:

a) File-share to our director.
b) Setting up our CMS.
c) Requesting for a HIDS solution to secure our host.

我们尝试访问它。发现是一个类似CMS的测试页。

然后再Internal Use Only中发现了管理员登录的页面。

我们发现是Cuppa CMS,我们首先通过searchsploit查找目标是否存在漏洞。

我们找到了一个本地/远程文件包含的漏洞,接下来尝试进行利用。

通过查看文件中描述的EXPLOIT,我们首先尝试验证漏洞是否存在。

漏洞存在,我们接下来准备上传Shell。通过python开启http服务器,并准备PHP的Reverse Shell,使用nc监听端口。(PHP Reverse Shell不做展开)最后通过curl发送请求触发漏洞,获得Shell。

Privilege Escalation

在上面的过程中我们获得了Shell,但是Shell处于一个低权限的状态,下面通过一种方式提权。

通过查找具有粘滞位权限的命令,我们找到了cp这个命令。

我们通过将passwd文件cp至当前目录,并通过cat构造一个newpasswd文件,并将构造好的用户添加入newpasswd,再通过cp的粘滞位权限将其替换/etc/passwd进行提权。

需要注意的一点,hacker用户的密码需要自行按照当前系统所使用的密码编码生成,比如CentOS与Ubuntu所使用的hash算法不同,则不能相互识别。

提权成功。

以上是关于Vulnhub Mercy Walkthrough的主要内容,如果未能解决你的问题,请参考以下文章

markdown WalkThrough for digitalworld.local:MERCY

Vulnhub:Digitalworld.local (Mercy v2)靶机

Sunset: Nightfall Vulnhub Walkthrough

Jerome: Vulnhub Walkthrough

Happycorp:1 Vulnhub Walkthrough

Ted:1 Vulnhub Walkthrough