zacheller@home:~/blog$

TryHackMe - Basic Pentesting


This room is about:

  • brute forcing
  • hash cracking
  • service enumeration
  • Linux Enumeration

I thought this would be a good exercise to introduce my friend @jeongm-in from my CTF team to system exploitation.

First we deploy the machine, and use OpenVPN to connect to the TryHackMe network.

We run nmap (or a custom portscanning script) to enumerate ports and service versions.

22 - ssh
80 - apache
139 - netbios-ssn Samba smbd 3.X - 4.X 
445 - netbios-ssn Samba smbd 4.3.11-Ubuntu
8009 - ajp13 Apache Jserv v1.3
8080 - http Apache Tomcat 9.0.7

Then, we run dirbuster and find a /development/ directory exposed on the webserver. It contains a dev.txt and j.txt. From these we learn that potentially Apache struts is being run somewhere and possible exploitable and that J’s password is easily crackable.

Next, using enum4linux on the server we get two local users, kay and jan, which match with the signatures on the txt files. We also learn that the minimum password length is 5.

We run hydra with a slightly cutdown rockyou.txt we create using awk to ensure minimum 5 character passwords.

$ hydra -l jan -P /usr/share/wordlists/5-char-min-rockyou.txt ssh://10.10.93.104
[...]
[22][ssh] host: 10.10.93.104	login:jan	password: armando

Now, we log into the server using the ssh credentials we brute-forced. Poking into /home/kay we find ssh keys. We use ssh2john.py and then john with rockyou.txt to crack the encrypted private key (password is beeswax).

So loggin in as kay is as easy as:

jan@basic2:/home/kay/.ssh$ ssh -i id_rsa kay@10.10.93.104

Now we can open pass.bak in kay’s home directory, which turns out to be kay’s sudoer password. Checking with sudo -l, kay can run ALL commands with sudo. Getting root then is just:

kay@basic2:~$ sudo su
root@basic2:/home/kay#