841 words
4 minutes
HTB X VulnLab: VulnEscape (Windows/Easy)

Recon šŸ•µļø#

Network Enumeration#

TCP Scan#

ip=10.129.191.249
nmap -sCV -p- -vv -A -T5 -oA scan/normal $ip

Based on the TCP scan results, only port 3389 is open, which is typically associated with RDP:

PortSoftwareVersionStatus
3389/tcpms-wbt-serverttl 127 Microsoft Terminal Servicesopen

Active Directory Enumeration#

From the scan, we can deduce that this is a standalone Windows machine rather than part of an Active Directory domain, which limits our attack surface. Nonetheless, let’s work with what we have and attempt to connect to the target using RDP. To make things easier, I’ll add /dynamic-resolution to automatically adjust the display to my window size, and +clipboard to enable a shared clipboard with the target. Since we don’t have credentials, I’ll use /sec:nla:off to bypass Network Level Authentication:

xfreerdp3 /v:$ip /dynamic-resolution +clipboard /sec:nla:off

After logging in, we’re presented with a screen labeled ā€˜Conference Display’ that instructs us to log in as KioskUser0 without a password. There’s also a button displaying text in Korean. The username immediately caught my attention, so I looked it up and discovered that Kiosk Mode is a restrictive feature in Windows that locks the system down to a limited set of applications:

Pasted image 20250806102147.png

After clicking on the mysterious button (which likely says something like ā€˜Connect’), we’re redirected to a Windows login screen with the username already pre-filled. We log in using an empty password and are greeted with a wallpaper showing a picture of downtown Busan, along with the text Busan Expo:

Pasted image 20250806103147.png

Exploiting 🦈#

User Flag:#

If we press the Windows key on our keyboard, the Start menu appears on the side, which confirms that we’re on a Windows machine likely part of the Busan Expo setup. Given the presence of KioskUser0 and the limited functionality, it’s reasonable to assume that the machine is probably being used as a display screen or for some other restricted purpose:

Pasted image 20250806103829.png

After landing on a Windows machine, the usual next steps are to either open File Explorer for manual enumeration or launch CMD/PowerShell to upload tools and automate the process. However, we’re unable to open any of these:

Pasted image 20250806104412.png

While going through the apps in the Start menu, the only one I was able to open was Microsoft Edge, which displays a greeting message in Korean:

Pasted image 20250806104947.png

Browsers typically have access to the file system by default, which is used to store downloaded files and open certain file types like PDFs. So, I tried my luck and found that we can indeed access the file system:

Pasted image 20250806105308.png

Now if we go to our user’s Desktop we can see the flag there:

Pasted image 20250806105554.png

Privilege Escalation#

First, let’s change the browser’s language from Korean to English. Don’t get me wrong, I love K-dramas and all, but these characters are just 😭:

alt text Back in the C:/ directory, there’s a suspicious _admin folder containing a configuration file. From the comment, we can see that it is for Remote Desktop Plus:

Pasted image 20250806115007.png

The password appears to be stored in base64 format but cannot be decoded, suggesting it is encoded using another method. The next logical step is to locate the program and try running it. I found the executable, but we can’t open it:

Pasted image 20250806125807.png

In Explorer, we can see that it cannot be opened either:

Pasted image 20250806130640.png

Whyyyyyyyyyyyyyyyyyyyyyyyyyy

So far, we don’t know how the exclusion rule works. Is it simply a whitelist of allowed programs? How does it determine whether we can access a specific program like Edge? Since this is an easy box, it might be something as simple as validating the executable’s name without checking its signature. To test this, let’s download the rdp.exe program and rename it to msedge.exe:

Pasted image 20250806134000.png

As you can see the trick works:

renamingExecTrick.gif

Waiting For The Box to become retired

To import the configuration file, I first had to download it to a directory we have access to. Then load it in the program:

Pasted image 20250806135313.png

Even though the file is loaded, we still can’t read or copy the password nor connect to the user’s RDP:

Pasted image 20250806135449.png

One trick that has worked for me in the past is using BulletPassView, a password recovery tool that can reveal passwords hidden behind bullet points. Let’s download it, rename it then drag and drop it from our attack host to the target machine (if that doesn’t work, try copying and pasting it instead):

Pasted image 20250806141420.png

Now we run it and can see the cleartext password displayed (If it doesn’t work for you, try closing Remote Desktop Plus, reopening it, navigating to the ā€œEdit Passwordā€ section, and then hitting Refresh in BulletPassView):

Pasted image 20250806165201.png

admin:Twisting3021

Using those credentials, I tried connecting via RDP from my attack host and also attempted to log out and log back in directly on the machine, but neither approach worked. So instead, let’s try running commands as admin rather than attempting to get a full session. First we’ll authenticate then elevate our shell:

runas /user:admin powershell
start-process powershell.exe -verb runas

Pasted image 20250806172221.png

Waiting For The Box to become retired

Finally, We collect the flag:

Pasted image 20250806172908.png


HTB X VulnLab: VulnEscape (Windows/Easy)
https://www.0xfr3nzy.com/posts/htb-vulnescape-windows-easy/
Author
0xfr3nzy
Published at
2025-08-06