root@thehacksparrow:~/writeups$ SYSTEM ONLINE
root@sparrow:~/writeups$ cat fireflow.md
// writeups

Fireflow

23 Jun 2026 · 28 min read · user access
Fireflow - maquina de Hack The Box

Executive summary — Behind a corporate landing page, Fireflow hides a Langflow instance vulnerable to CVE-2026-33017: the public build_public_tmp endpoint runs arbitrary Python with no authentication. Langflow's superuser password is reused for the real SSH account. From there, a leaked config file points to an internal service — the «MCP AI Tool Registry» — vulnerable to a classic JWT alg: none bypass that lets an admin token be forged with no signature at all. That fake role registers a malicious tool that gives RCE inside a Kubernetes pod. That pod's ServiceAccount holds an innocuous-looking RBAC permission (get nodes/proxy) that actually grants direct access to the node's Kubelet, from where commands run as root inside a privileged monitoring pod that has the host's root filesystem mounted.

PlatformHack The Box
Operating systemLinux
DifficultyMedium
StatusRetired
Target IP10.129.37.81

Attack map

[443] fireflow.htb — Langflow flow_id exposed in the public HTML
   │  CVE-2026-33017 — unauthenticated RCE in Langflow 1.8.2 (build_public_tmp)
   ▼
[RCE]  www-data
   │  Langflow superuser password (.env) reused over SSH (nightfall)
   ▼
[SSH]  nightfall@host  (user.txt)
   │  ~/.mcp/config.json leaks MCP AI Tool Registry credentials (NodePort 30080)
   │  JWT alg:none → forged admin token, no signature needed
   ▼
[RCE]  Malicious tool registered via MCP → Kubernetes pod
   │  Excessive RBAC: get nodes/proxy → Kubelet API (10250)
   ▼
[ROOT]  Kubelet exec on a privileged pod (node-exporter) with host / mounted

1. Reconnaissance

echo "10.129.37.81 fireflow.htb flow.fireflow.htb" | sudo tee -a /etc/hosts
nmap -p- --min-rate=2000 -T4 10.129.37.81 -oN htb_allports.txt
PORT    STATE SERVICE
22/tcp  open  ssh
443/tcp open  https

Only two ports open from outside. Port 80 doesn't even show as filtered in the sweep — nginx actively rejects the connection instead of just redirecting or staying silent.

nmap -p22,443,30080,80 -sV -sC 10.129.37.81 -oN htb_sVsC.txt
22/tcp    open     ssh      OpenSSH 9.6p1 Ubuntu 3ubuntu13.16 (Ubuntu Linux; protocol 2.0)
80/tcp    closed   http
443/tcp   open     ssl/http nginx
| ssl-cert: Subject: commonName=fireflow.htb/organizationName=Task Force Nightfall
| Subject Alternative Name: DNS:fireflow.htb, DNS:*.fireflow.htb
|_http-title: FireFlow — Task Force Nightfall
30080/tcp filtered unknown
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Three key clues: the TLS cert carries a wildcard SAN *.fireflow.htb (more vhosts to find); port 30080/tcp shows as filtered — the typical Kubernetes NodePort range (30000-32767), hinting at an internal cluster service only reachable from within; and the HTTP title already gives away the system username (nightfall).

🔒 Free account required

This is USER ACCESS content — free to unlock, no payment. The rest of the write-up (and everything else at this level) opens up once you're signed in.

Create a free account