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

Forgotten

16 Sep 2025 · 14 min read · root access
Forgotten - maquina de Hack The Box

Executive summary — Forgotten hides a LimeSurvey instance whose web installer was never completed nor locked down. By standing up an attacker-controlled MySQL reachable over the VPN, the wizard can be finished end-to-end, creating a Superadmin account of the attacker's choosing — without exploiting any authentication vulnerability. From there, LimeSurvey's Plugin Manager allows uploading a malicious ZIP that gives RCE inside a Docker container. The container's environment variables leak the service's real password, which is reusable over SSH on the host. Inside the container, that same password also unlocks sudo ALL, and a shared bind mount between host and container lets a SUID bash binary be dropped that — with no user-namespace remapping — grants root on the host directly.

PlatformHack The Box
Operating systemLinux
DifficultyEasy
StatusRetired
Target IP10.129.37.93

Attack map

[80] LimeSurvey — abandoned web installer, unauthenticated
   │  Wizard completed with an attacker-controlled MySQL (VPN) → attacker-created Superadmin
   ▼
[RCE]  Plugin Manager — ZIP with a PHP class + webshell
   │  container env leaks LIMESURVEY_PASS
   ▼
[SSH]  limesvc@host  (same password reused)
   │  inside the container: sudo ALL with that same password
   │  shared host↔container bind mount + SUID bash
   ▼
[ROOT]  container UID 0 = host UID 0 (no userns-remap)

1. Reconnaissance

nmap -p- --min-rate 5000 -v 10.129.37.93 -oN nmap_ports.txt
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
nmap -p22,80 -sCV -v 10.129.37.93 -oN nmap_sV.txt
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.56
|_http-title: 403 Forbidden
|_http-server-header: Apache/2.4.56 (Debian)
Service Info: Host: 172.17.0.2; OS: Linux; CPE: cpe:/o:linux:linux_kernel

The clue: nmap's Service Info header shows Host: 172.17.0.2, a default Docker range IP (172.17.0.0/16) — a sign from the very start that the HTTP service runs inside a container behind the host's proxy/Apache.

🔒 Clearance required

This content is Root Access only. Everything else on the site — the free tier, the whole public library — stays open.

See Root Access plans

No account? Create one free then upgrade from your console.