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。