This is a write-up on how I solved OpenAdmin from HacktheBox.
Hack the Box is an online platform to test and advance your skills in penetration testing and cybersecurity.
about this box:
OpenAdmin is a relatively easy, super simple and straightforward box. Totally recommended for newbies. The user part was so funny for me, root takes about 1 minute. So, let’s get hands dirty!
Nmap to scan the target ports:
nmap Network exploration tool and security / port scanner
-sV (Version detection)
-sC Performs a script scan using the default set of scripts.
Only two ports are opened 22 and 80. We have SSH on port 22 and default Apache2 page on port 80.
Nothing really interesting here, time for an enumeration.
gobuster dir -u http://10.10.10.171 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50
We have got 3 page
/music and /artwork are static ones, nothing really interesting here.
Let’s check what we have on
OpenNetAdmin is an IPAM (IP Address Management) tool to track your network attributes such as DNS names, IP addresses, Subnets, MAC addresses just to name a few. Through the use of plugins you can add extended it’s functionality.
By the way, OpenNetAdmin v18.1.1 is vulnerable to remote code execution.
To run this script successfully we need to pass it URL as a first argument.
Great, We just got low-privilege (
www-data) shell back.
ONA saves database configure file in -
/www/local/config/, see what we have here:
Oh, here it is. We got database configuration file with credentials on it.
To access MySQL we need to upgrade our Shell.
Grab PHP reverse shell from Pentestermonkey — reverse shell
Then, get the IP address with
After getting the IP address change IP address in the reverse shell file and finally start Python server
python -m SimpleHTTPServer 80 for download the file.
Grab the reverse shell on OpenAdmin via RCE script.
To trigger the file open it via browser and get the reverse shell back. Before that, we need to set up a listener.
nc -nvlp 9001
We got the shell back!
We still can’t connect to the database
Mm wait, We also have port 22 opened. let’s try it.
before that, grab usernames from
We have 3 users:
root, jimmy and joanna
Oh, sweet! we are in but we still don’t have access to get the user flag. So, we need to access joanna’s account.
Remember useless static web pages? (
/music and /artwork) where they are?
We can easily find it with the find command
find / -type d -name artwork 2>/dev/null
Bingo, they are located in
/var/www/ instead of
ona is located.
In /var/www/ we have 3 directory
html — where static pages are located
internal — it seems very interesting…
ona — Which is Symbolic link of /opt/ona/www
index.php is login page which checks username and password
So, we have a username
jimmy and we want the password. Good for us, it is an easy password so, we can crack it with online service.
and we got password
main.php file checks if we are authorized and gives us a private key of the
We can’t access it by typically going to
http://10.10.10.171/index.php/ because it is running locally!
We have it on port
To access it we need port forwarding via SSH.
ssh -L 52846:127.0.0.1:52846 firstname.lastname@example.org
After port forwarding, We can simply access it via our browser.
Let’s log in and grab the private key
We got it!
Now, we can SSH via joanna's user.
Oh crap, it needs passphrase.
ninja is not the password, it should be something similar. with the ‘ninja’ text.
Before cracking it with john, grep only the passwords which contains ninja.
John needs a crackable format. Convert it with
And, crack it!
Sweet! It just cracked it in seconds
joanna ssh pasphrase:bloodninjas
We have the passphrase, now we can log in as a
Check what we can run as root by simply typing
Oh man, It ruined the fun for me :(
We can easily execute system commands
ctrl + R and ctrl + Xreset; bash 1>&0 2>&0
And we are root in 10 seconds!
I hope you enjoyed, follow me for future posts.