Shoppy
Shoppy
Platform: HackTheBox | Difficulty: Easy | OS: N/A Author: D3v0o0Nu11 | Date: 2026-02-10 | Status: Solved
Summary
Walkthrough of the HackTheBox machine Shoppy. Foothold via sql injection; direct root access from the foothold. Both flags captured and redacted.
Recon
Port scan
bash read-only • copy allowednmap -sVC -p- <IP> -oA nmap/Shoppy
| Port | Service | Version | Notes |
|---|---|---|---|
| - | - | - | (ports documented in narrative) |
Enumeration highlights
Foothold
Vulnerability / Misconfiguration
-
First, let's check all open ports and it's services from the host given.
-
Based from the open ports. We know the machine is running a web application and there's port 9093 which has copycat service.
-
I did a small outsource about copycat service. Turns out it's a database replication service.
-
In general the data stored in JSON format, hence we know the vuln here is
no sql injection. -
Let's run gobuster to see all availables directories and files.
-
Actually we got many directories and files, but we only can open the
admin,Admin,login, andLogin. -
All of it leads to this webpage.
-
Since we already know the vuln is
nosqlii use this as my references. -
Let's enter both username and pass as
admin'||'1==1'. -
Now click the
searchbutton. -
Enter the same input as before to textbox.
-
When i tried to cracked the admin's hash, seems the plaintext is not leaked in the internet. Then i tried for
josh. Got this: -
I tried to login ssh with josh as the username and the password as the plaintext we cracked.
-
But it says wrong password.
-
Let's use another approach.
-
Maybe let's use
fuffto checks if there are any subdomains available.
ffuf -u http://shoppy.htb -H "Host: FUZZ.shoppy.htb" -w /usr/share/wordlists/SecLists-master/Discovery/DNS/bitquark-subdomains-top100000.txt -mc all
- Since there's many responses with size of 169. Let's filter it.
ffuf -u http://shoppy.htb -H "Host: FUZZ.shoppy.htb" -w /usr/share/wordlists/SecLists-master/Discovery/DNS/bitquark-subdomains-top100000.txt -mc all -fs 169
-u -> stands for target URL
-H -> stands for header.
-w -> stands for wordlist file path.
-mc -> stands for match http status code.
-fs -> stands for filter http response size.
- Got it!
- Now place the subdomain to
/etc/hostsfirst, then open it on the web browser.
ON THE WEB BROWSER
-
Now let's enter
joshcreds. -
It looks like we have another username here.
-
Let's check every channels here.
-
Got a creds at
Deploy Machinechannel. -
Let's try ssh to login now.
username: josh
password: Sh0ppyBest@pp!
25 Got the user flag!
Proof
User flag: REDACTED
Privilege Escalation
User -> Root/Admin
The exploit provided a shell running with elevated privileges directly, so no separate privilege escalation was required.
Root flag: REDACTED
Flags
| Flag | Value |
|---|---|
| user | REDACTED |
| root | REDACTED |
Lessons Learned
- Enumerate everything; version strings map to CVEs.
- Confirm each hypothesis with a test before building the exploit.
- Chain foothold -> privilege escalation mechanically.