Published on November 14, 2025 by Ewan Oleghe.
Performed full compromise of VulnHub Mr. Robot with methodical, reproducible techniques and artifacted evidence. Produced reproducible attack walkthroughs, artifacts, SOC detection cases, hardening recommendations, and incident-response playbooks..
Deployed Mr. Robot and Kali in my home lab on VirtualBox host-only networking to enable VM-to-VM communication while avoiding external exposure.
Nmap Scan.
With connectivity verified, Nmap was used for enumeration to identify open ports, services, and potential vulnerabilities on the Mr. Robot machine. Using targeted scanning options allowed for efficient information gathering without generating excessive network noise.
### bash
### Nmap Scan
nmap -T3 -n -Pn -p- 192.168.78.103

Three ports discovered 22, 80 and 443. Port 22 is closed.
### bash
### Service & script scan
nmap -sV -sC -T3 -n -Pn -p80,443 192.168.78.101

The scan revealed two open TCP ports (80 and 443) on the target system, both running Apache-based web services. These exposed services serve as key footholds for deeper enumeration and potential exploitation pathways.
The Nmap scan of the target identified a small but potentially exploitable attack surface consisting of two open web-related ports: 80 (HTTP) and 443 (HTTPS), both running Apache httpd. While no high-severity vulnerabilities were immediately disclosed during the default NSE script scan, several findings warrant further investigation:
Apache HTTP Server Exposure on Ports 80
Further investigation of the HTTP service at port 80 revealed that the site is running WordPress. This was confirmed through fingerprinting using Wappalyzer, which identified WordPress-specific technologies and structure. The presence of WordPress significantly expands the potential attack surface, as it introduces common vectors such as outdated plugins, vulnerable themes, weak administrative credentials, and default configurations.

Directory Bruteforce.
I used GoBuster to uncover hidden directories.
### bash
### GoBuster Scan
gobuster dir -u http://192.168.78.103/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Gobuster revealed 'wp-login.php' and 'wp-admin' pages, both pages redirecting to '/wp-login.php' and an attempt at login produces a 'username' error.


robots.txt Enumeration Findings
Further enumeration of the robots.txt file on the target web server revealed the following entries:
User-agent: *
fsocity.dic
key-1-of-3.txt
The presence of fsocity.dic is significant, as the .dic extension indicates a dictionary file, which commonly contains a large list of words.
The file key-1-of-3.txt also suggests the presence of intentionally placed artifacts.
Download files to local machine and Examine these files
The fsocity.dic file was successfully downloaded from the target server, and a line count analysis using the wc -l command confirmed that the dictionary file contains 858,160 entries.
Previewing the File Contents
A quick inspection of the first few entries showed common words and duplicate identifiers. The file was sorted and duplicate lines were removed, producing a cleaned wordlist named nfsocity.dic. The resulting file contained 11,451 unique entries.
### bash
sort fsocity.dic | uniq > nfsocity.dic

### bash
### Hydra Username Enumeration
hydra -L nfsocity.dic -p test 192.168.78.103 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Invalid username'

### bash
### Hydra Password Brute-Force
hydra -l elliot -P nfsocity.dic 192.168.78.103 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=Password is incorrect"


Gaining Initial Access via WordPress
I can utilize the WordPress administrative access to establish a managed shell on the web server using Metasploit as part of the authorized assessment.
### bash
### Metasploit WordPress Admin Shell
msfconsole
msf >
use exploit/unix/webapp/wp_admin_shell_upload


Using the WordPress-admin-derived shell, I accessed the /home/robot directory and retrieved the password.raw-md5 file, which contains the hashed password for the user robot; access to key-2-of-3.txt was denied due to insufficient permissions.




*Cracking 'password.raw-md5'

Privilege Escalation to root
### bash
sudo -l
### bash
find / -perm -4000 -type f 2>/dev/null

### bash
nmap --interactive

nmap> ! whoami
root
nmap> ! ls /root
key-3-of-3.txt
nmap> ! cat /root/key-3-of-3.txt

All three keys have now been successfully identified, including the final one located in /root/key-3-of-3.txt. This confirms that full privilege escalation to the root account was achieved within the scope of the authorized challenge, completing the objectives of the exercise.