TR0LL 1
- Layout for this exercise:
1 - INTRODUCTION
- The goal of this exercise is the study of the hacking process for the vulnerable machine Tr0ll 1.
- According to the author's description there is a Proof.txt file at the /root directory.
- Tr0ll 1 can be downloaded from here:
- Once downloaded and extracted with VMware:
2 - ENUMERATION
- Using netdiscover to find the IP corresponding to Tr0ll 1:
- Scanning with Nmap there are 3 available services at port 21 (FTP), 22 (SH) and 80 (HTTP):
2.1 - Web service
- Starting with the web service, we detect the presence of the folder /secret and the file robots.txt:
- Same information with nikto:
- Going directly to the website, there is nothing interesting:
- Similar results when checking robots.txt and /secret:
2.2 - FTP Service
- Scanning specifically the port 21 for FTP service, we discover that the anonymous login is allowed:
- Login with anonymous:
- There is a very promising file called lol.pcap:
3 - EXPLOITATION
- Getting the file lol.pcap:
- lol.cap can be also downloaded by using the browser with FTP protocol:
- Opening lol.pcap with Wireshark:
- There is a line about a file called secret_stuff.txt:
- Following the TCP Stream number 0:
- Following the TCP Stream number 2:
- So, we learn that there is an additional directory called sup3rs3cr3tdirlol
- Let's see if we can access it via the browser:
- A file called roflmao is contained, let's download it and see what we can learn about it
- It seems to be a BIN file:
- At this moment there are no execution permissions:
- Giving execution permissions:
- Running the file we find more information:
- Trying 0x0856BF as a web directory, we discover 2 new folders:
- The folder good_luck contains a list of potential usernames:
- About the folder this_folder_contains_the_password there are 2 strings that could be passwords: Pass.txt and Good_job:)
- Let's create a text file for potential usernames:
- Same thing for potential passwords:
- Launching Hydra over SSH service using both wordlists:
- The result is successful for overflow:Pass.txt
- Using overflow:Pass.txt as SSH credentials we get a remote shell:
- However this shell is of low privilege, so we need privilege escalation to complete the attack:
4 - PRIVILEGE ESCALATION
- Let's try two alternative ways to perform privilege escalation:
4.1 - Exploiting the Operating System
- From previous step we know that Tr0ll 1 is an Ubuntu 14.04 machine with kernel 3.13:
- Googling for an exploit for this version of machine:
- searchsploit helps us to find the privilege escalation exploit:
- The path to find the exploit is:
- Looking for 37292.c:
- Setting a SimpleHTTPServer at port 8000 of the attacker Kali:
- Going to the remote shell at Tr0ll1, let's change to directory /tmp, what is usually writable:
- Downloading 37292.c from Kali:
- Compiling 37292.c:
- Running the executable 37292 we get finally a root shell:
4.2 - Exploiting crontab bad configuration
- It is noticeable that every some minutes the SSH connection is closed by the remote host, sending back a laughing message:
- At the same time the content of /tmp is removed by the remote host:
- These two circumstances make us think that probably a crontab job is working here.
- However, when searching for crontab permissions are denied:
- Looking for writable areas:
- Going to cronlog we detect the presence of a script called cleaner.py running every 2 minutes via crontab:
- Let.s find it:
- Interestingly, cleaner.py has full root privileges:
- Reading the content of cleaner.py we understand now why tr0ll1 is clearing all content of /tmp every 2 minutes:
- Now, the idea that comes to our mind: why not change the content of the script on our own interest? For instance, providing the user overflow with sudo privileges to run a root shell.
- Let's check that at this moment the user overflow does not have any sudo privileges:
- Editing cleaner.py to assign all sudo editing privileges to the user overflow:
- Waiting until the period expires, tr0ll1 kicks me out of the SSH connection:
- Reconnecting again with SSH:
- Eventually user overflow gives us a root shell:
- Being root we can look deeper into the crontab works to understand what was happening at tr0ll1:
- Every 5 minutes the script lmao.py sends back a teasing message and also kills the session for the user overflow:
5 - CAPTURING THE FLAG
- Going to the /root folder we finally read the flag proof.txt: