I rooted the DEV VM by combining web reconnaissance, NFS shares, an encrypted ZIP containing an SSH key, a web Local File Inclusion (LFI) that exposed credentials, and a sudo zip sudo-rights misconfiguration (GTFObins pattern) to get root. This write-up explains every step, the commands I used, and how to root the machine.

Target: 10.104.173.156 (Dev VM)

nmap -sC -sV -p- 10.104.173.156
None

Important ports discovered:

  • 22/tcp — ssh
  • 80/tcp — http (Apache + BoltWire site)
  • 111, 2049 — rpcbind / NFS
  • 8080/tcp — http (dev interface)

So: web app(s) + NFS available. NFS often contains files/configs—worth investigating.

Web discovery with ffuf

I fuzzed the web root on port 8080 with a common directory list:

ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.104.173.156/FUZZ
and
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.104.173.156:8080/FUZZ

Useful hits (examples):

  • /src, /app, /vendor, /extensions, /dev, server-status

NFS—mount & extract save.zip

NFS was open, so I mounted the share and found save.zip:

None

Using this command i mounted the file:

sudo mount -t nfs $ip:/srv/nfs .
None

save.zip contained an SSH private key, id_rsa, but it was password-protected.

None

Brute force / wordlist cracking the zip:

I attempted to unzip it; it asked for a password.

I ran fcrackzip:

fcrackzip -v -u -D -p /usr/share/wordlists/rockyou.txt save.zip
None
None
None

This returned a candidate password java101. I tried it—it did not unlock the key (passphrase mismatch). So I continued looking for other credentials.

Web directory search:

While fuzzing directories, I discovered some interesting files. In particular, I found app/config/config.yml at: http://10.104.173.156/app/config/config.yml.

None

That I_love_java passphrase looked promising for the id_rsa passphrase (and/or web users). Also todo.txt hinted at by users: jp. But it didn't work.

Discovering BoltWire, finding an LFI

During directory enumeration I navigated to the dev interface at

http://10.104.173.156:8080/dev/
None

There I noticed the site was running BoltWire—a PHP-based CMS I hadn't seen on this box before. A quick web search for "BoltWire dev LFI" turned up a known Local File Inclusion (LFI) issue affecting certain BoltWire versions, which looked promising for reading files on the server.

I tried the public exploit examples, but the PoC required an authenticated user to trigger the vulnerable code path. That meant I needed to either find valid credentials or create an account.

None
None

Browsing the site, I found the registration page and created a new user

None
None

With that username and the credentials I'd already discovered in the app configuration I_love_java, I tried SSH:

ssh -i id_rsa jeanpaul@10.104.173.156
# Passphrase: I_love_java
None

The key accepted the passphrase, and I successfully logged in as jeanpaul. That gave me a foothold on the machine and allowed me to continue with local enumeration and privilege escalation.

Privilege escalation

After getting a foothold as jeanpaul, I checked my local privileges to see what I could run as root. But it didn't work.

For privilege escalation I turned to GTFObins (https://gtfobins.github.io/) , a curated catalog of techniques for abusing common binaries when they're available with elevated privileges.

None
None
None

That't it!!!!. Thanks for reading.