root@sparrow:~/writeups$ cat farewell.md
// Offensive
Farewell
21 Jun 2023
· 11 min read
· root access
Executive summary — Farewell is a TryHackMe web room solved by chaining low-severity flaws: the login portal enumerates users and leaks password hints, narrowing thedeliver11account down to aTokyo+4-digit pattern; a WAF with rate-limiting is bypassed by rotatingX-Forwarded-Forand tuning theUser-Agentto complete the brute force; once in as a user, a stored XSS in the message form runs in the administrator's browser and, because thePHPSESSIDcookie lacks the HttpOnly flag, it lets us steal the admin's session and take over the panel. A full Enumeration → Brute force → Stored XSS → Cookie theft → Admin path.
| Platform | TryHackMe |
| Operating system | Linux |
| Difficulty | Medium |
| Room | Farewell |
| Target IP | 10.48.178.163 |
Attack map
[80/HTTP] Apache 2.4.58 — login portal
│ username enumeration → password-hint disclosure
▼
[deliver11] hint "Tokyo" + 4 digits (brute-forceable)
│ WAF bypass: User-Agent + X-Forwarded-For rotation → password
▼
[dashboard.php] USER FLAG + "Submit Farewell Message" form
│ stored XSS reviewed by the admin bot (WAF keyword-filter bypass)
▼
[admin PHPSESSID] cookie stolen (missing HttpOnly flag)
│ session hijacking in the browser DevTools
▼
[admin.php] ADMIN FLAG1. Initial reconnaissance
We start by mapping the attack surface with a full port scan, version detection and default scripts:
nmap -T4 -n -sC -sV -Pn -p- 10.48.178.163Why these flags:
-p-→ scans all 65535 TCP ports, not just the usual top 1000.-sC -sV→ default NSE scripts + per-service version detection.-Pn -n→ skip host-discovery ping and DNS resolution (faster).
Relevant results:
- Port 22 → OpenSSH 9.6p1.
- Port 80 → Apache 2.4.58 serving a login form. The
PHPSESSIDcookie is issued without theHttpOnlyflag —a seemingly minor detail that turns out to be decisive at the end—.
Resumen ejecutivo — Farewell es un room web de TryHackMe que se resuelve encadenando fallos de baja severidad: el portal de login enumera usuarios y filtra pistas de contraseña, lo que reduce la cuentadeliver11a un patrónTokyo+4 dígitos; un WAF con rate-limit se saltea rotandoX-Forwarded-Fory ajustando elUser-Agentpara completar la fuerza bruta; ya como usuario, un XSS almacenado en el formulario de mensajes se ejecuta en el navegador del administrador y, como la cookiePHPSESSIDcarece del flag HttpOnly, permite robar la sesión del admin y tomar el panel. Un recorrido Enumeración → Fuerza bruta → XSS almacenado → Robo de cookie → Admin.
| Plataforma | TryHackMe |
| Sistema operativo | Linux |
| Dificultad | Medium |
| Room | Farewell |
| IP objetivo | 10.48.178.163 |
Mapa del ataque
[80/HTTP] Apache 2.4.58 — portal de login
│ enumeración de usuarios → filtración de pistas de contraseña
▼
[deliver11] pista "Tokyo" + 4 dígitos (fuerza bruta viable)
│ bypass del WAF: User-Agent + rotación de X-Forwarded-For → contraseña
▼
[dashboard.php] USER FLAG + formulario "Submit Farewell Message"
│ XSS almacenado revisado por el bot admin (bypass del filtro del WAF)
▼
[PHPSESSID del admin] cookie robada (sin flag HttpOnly)
│ secuestro de sesión en las DevTools del navegador
▼
[admin.php] ADMIN FLAG1. Reconocimiento inicial
Empezamos mapeando la superficie de ataque con un escaneo completo de puertos, detección de versiones y scripts por defecto:
nmap -T4 -n -sC -sV -Pn -p- 10.48.178.163Por qué estos flags:
-p-→ escanea los 65535 puertos TCP, no solo los 1000 habituales.-sC -sV→ scripts NSE por defecto + detección de versión de cada servicio.-Pn -n→ omite el ping de descubrimiento y la resolución DNS (más rápido).
Resultados relevantes:
- Puerto 22 → OpenSSH 9.6p1.
- Puerto 80 → Apache 2.4.58 sirviendo un formulario de login. La cookie
PHPSESSIDse emite sin el flagHttpOnly—un detalle aparentemente menor que resultará decisivo al final—.
🔒 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 plansNo account? Create one free then upgrade from your console.
🔒 Nivel de acceso insuficiente
Este contenido es solo para Root Access. Todo lo demás del sitio — el nivel gratuito, toda la biblioteca pública — sigue abierto.
Ver planes de Root Access¿Sin cuenta? Crea una gratis y luego mejora desde tu consola.