A Linux machine hiding multiple internal web services — chaining two vulnerabilities in an AI workflow platform breaks out of a Docker container, and a symlink attack against a self-hosted Git service delivers root.
Recon
Nmap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
$ ip=10.129.26.108; ports=$(nmap -p- --min-rate=1000 -T4 $ip | grep '^[0-9]' | cut -d '/' -f 1 | tr' '',' | sed s/,$//); nmap -p$ports -sC -sV $ip Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-11 15:32 -0400 Nmap scan report for 10.129.26.108 Host is up (0.12s latency).
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.15 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 0c:4b:d2:76:ab:10:06:92:05:dc:f7:55:94:7f:18:df (ECDSA) |_ 256 2d:6d:4a:4c:ee:2e:11:b6:c8:90:e6:83:e9:df:38:b0 (ED25519) 80/tcp open http nginx 1.24.0 (Ubuntu) |_http-server-header: nginx/1.24.0 (Ubuntu) |_http-title: Did not follow redirect to http://silentium.htb/ Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 16.17 seconds
Two ports open: 22/tcp (SSH) and 80/tcp (nginx redirecting to silentium.htb).
Foothold
Hosts File
1
$ echo'10.129.26.108 silentium.htb' | sudotee -a /etc/hosts
The main site is a static landing page with no interactive functionality.
The Flowise /api/v1/account/forgot-password endpoint returns a valid tempToken directly in the response body without requiring email verification. To exploit this we first need a valid registered email.
The landing page’s leadership section lists employee names. Testing ben@silentium.htb on the login form returns Incorrect Email or Password rather than User Not Found, confirming the account exists.
Send a password reset request and capture the tempToken from the response:
Log in to the Flowise dashboard as ben@silentium.htb:Password123.
CVE-2025-59528 — Flowise customMCP RCE
CVE-2025-59528 is an RCE vulnerability in Flowise’s customMCP node. The /api/v1/node-load-method/customMCP endpoint processes JavaScript passed in mcpServerConfig without any sanitisation, executing it directly in the Node.js process.
Create an API key from the dashboard, then start a listener and send the payload:
ben@silentium:~$ /opt/gogs/gogs/gogs --version Gogs version 0.13.3
CVE-2025-8110 — Gogs Symlink Arbitrary File Write
Gogs 0.13.3 is vulnerable to CVE-2025-8110 — the PutContents API follows symbolic links when writing file content to a repository. By committing a symlink pointing to a sensitive file and then using the API to write content to that symlink path, we can overwrite arbitrary files on the host as the gogs process owner (root).
The plan is to write our SSH public key to /root/.ssh/authorized_keys via a symlink in a Gogs repository.
Register an account, create a repository named pwn, and generate an API token from Settings > Applications: