PLUCK: 1
- Layout for this exercise:
1 - INTRODUCTION
- The goal of this exercise is to develop a hacking process for the vulnerable machine Pluck.
- Pluck can be downloaded from here:
https://www.vulnhub.com/entry/pluck-1,178/
- Once downloaded, extracted and imported with VirtualBox:
2 - ENUMERATION
- Using netdiscover let's confirm that the IP is 192.168.1.115:
- Scanning with nmap:
- Browsing the web server:
- nikto helps discovering a very promising LFI (Local File Inclusion) vulnerability at the web application:
- Let's check that LFI works, for instance reading /etc/passwd:
- From /etc/passwd we learn that there are users like bob, peter, paul, backup-user, ..
- Also, reading the last line it seems that there is a script for performing backups::
- Taking advantage of the LFI to read the script backup.sh:
- The backup script informs us about three issues:
- backups can be transferred with TFTP
- the compressed backup file is located at /backups/backup.tar
- both folders /home and /var/www/html are usually backup
- Obviously, our next goal must be to download backup.tar
3 - EXPLOITATION
3.1 - Local File Inclusion
3.1 - Local File Inclusion
- Trying to get backup.tar using the browser and taking advantage of the LFI is a little bit messy, due to the hugh size of the file:
- tftp does a better job:
- Also, curl would be a good alternative:
- Opening backup.tar:
- Now we have Pluck's backup folders available at our Kali machine:
- Searching for information inside bob and peter's home folders, there is nothing out of the ordinary:
- However we find a collection of 6 private and public keys inside paul's home folder:
- Checking what type of file are these keys, they are valid for SSH connections:
- Now, we can use these keys with option -i identity_file to establish SSH conections:
- First attempt with id_key1 is unsuccessful:
- Same thing with id_key2 and id_key3:
- However, id_key4 leads to a Pdmenu:
- Pdmenu is a simple menu program that displays a menu from which the user can pick programs to run, for instance to edit files:
3.2 - Limited remote shell with PHP reverse shell
- Now, using the Pdmenu we are going to create remotely a file called myshell.php at /home/paul folder, just buy adapting the well-known PHP script php-reverse-shell.php to our needs:
- Editing remotely with Pdmenu the file /home/paul/myshell.php and copying into it the content of the local myshell.php:
- Let's notice that the text editor is vim, so we save the file with writing and quitting :wq!
- Now, it is time to start the actual explotaition, first by setting a listening nc session, and second by running myshell.php with curl:
- The exploitation is successful and we get a limited remote shell:
3.3 - Limited remote shell with VIM and external commands
- As an alternative now we are going to use Pdmenu to insert the command /bin/bash in the Vim editor, following these directions:
https://www.linux.com/learn/vim-tips-working-external-commands
- Just quitting Vim and Pdmenu comes back with a remote limited shell:
4 - PRIVILEGE ESCALATION
4.1 - Local Privilege Escalation with exim-4.84.7 exploit
- Finding the SUID files that exist on the system, we discover exim-4.84-7:
- Exim (current version 4.91) is an SMTP email message transfer agent (MTA) for use on Unix systems under GPL, similar in style to Smail 3.
- Exim before 4.86.2, when installed setuid root, allows local users to gain privileges via the perl_startup argument:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1531
- There is a Local Privilege Escalation exploit related to this vulnerability:
- Copying the script to a new file exim_exploit.sh:
- Transferring exim_exploit.sh from Kali to Pluck, specifically to /tmp folder:
- The transfer is successful, but exim_exploit.sh has no execution permissions:
- Giving execution permissions to exim_exploit.sh:
- Running the script finally we get a remote root shell:
4.2 - Local Privilege Escalation with Dirty Cow Kernel Exploit
- An alternative to method explained at 4.1 would be to use this exploit:
- Downloading to Kali:
- Transferring to Pluck:
- Compiling:
- Running cowroot we get a remote root shell:
- Apparently cowroot destabilizes the system, so we follow these directions to achieve a more stable shell:
5 - CAPTURING THE FLAG
- Reading flag.txt: