hacksudo thor vulnhub walkthrough writeup

Hacksudo Thor Walkthrough – Vulnhub

Hacksudo Thor is a basic machine from Vulnhub. This is probably the easiest machine from the hacksudo series that I recommend to beginners. And, I tested the machine in VirtualBox. “Hacksudo Thor Walkthrough – Vulnhub”

Link to the machine: https://www.vulnhub.com/entry/hacksudo-thor,733/

Blogger 1 Walkthrough – Vulnhub – Writeup

Identify the target

Firstly, we have to identify the target machine. For this, we must make sure that the attacking and the target machine are on the same network (either bridged or NAT (I prefer NAT)).

sudo netdiscover -r 10.0.0.0/24
The IP address of the target is 10.0.0.5. The IP address of the attacker machine is 10.0.0.4

Scan open ports

Next, we have to check the exposed services on the target.

sudo nmap -v -T4 -p- -A -oN nmap.log 10.0.0.5
Nmap scan results

Here, we see that only the HTTP port is worth enumerating further.

Enumerate the webserver

The default page didn’t give me anything. It has a form that doesn’t suffer SQL injection.

Default page

However, we can see a comment in the source of the News page that we can visit using the link. It says cgi-bin.

Source code of news link

This hints that this apache server might suffer from shellshock vulnerability. For more information, check the following file.

https://owasp.org/www-pdf-archive/Shellshock_-_Tudor_Enache.pdf

It requires a shell script to be present on the machine. I guessed the filename to be shell.sh. But, we can test that using dirb.

dirb http://10.0.0.5/cgi-bin -X .sh

One point to note though, the tool gobuster doesn’t capture status code 500 by default. So, it won’t detect this file because this gives 500 by default.

Directory bruteforcing using dirb

Shellshock vulnerability has a Metasploit module.

msfconsole
Use the exploit

Now, we have to set options. Furthermore, I don’t like the console of the Metasploit framework. So, I am also listening on port 9001 using netcat.

nc -nlvp 9001
Got the meterpreter shell

Then, I spawned a reverse shell in the port that I am listening, i.e. 9001.

Invoked the reverse shell
Got the reverse shell

Next, I upgraded the shell. Check the following link for more information.

Upgrade to an intelligent reverse shell

Privilege escalation to user

When we check the sudo permissions of a current user, we find that it can execute a script.

sudo -l
Sudo permissions of www-data

We can see that the user can execute a script as another user thor. Furthermore, the script suffers from code execution.

sudo -u thor /home/thor/./hammer.sh
Execution of script

This means that we can get the shell access of the user thor by using ‘bash’ as the input.

The shell of the user thor

Now, we can simply make it better by using the following command.

SHELL=/bin/bash script -q /dev/null
The improved shell of thor

Root privilege escalation

Finally, we come to the part where we can get root access. This is also quite simple. If we check the sudo permissions of the user thor, we see a binary that he can execute as root.

The sudo permissions of the user thor

This can lead us to RPE.

https://gtfobins.github.io/gtfobins/service/#sudo

sudo service ../../bin/bash
Root proof
5 3 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Scroll to top

Send help to Morocco.

X