Chaining Vulnerabilities
Executive summary — Chaining Vulnerabilities is a TryHackMe room built around the art of chaining vulnerabilities: weak credentials open the door, a Stored XSS in the user profile lets us inject JavaScript, and the absence of CSRF protection means that script —executed in the administrator's browser— resets their credentials. The result is a full account takeover of the admin panel.
| Platform | TryHackMe |
| Operating system | Linux / PHP |
| Difficulty | Easy |
| Room | Chaining Vulnerabilities |
| Target IP | 10.10.177.6 |
Attack map
[Login] weak credentials testuser:password123
│ access as a low-privilege user
▼
[Edit Profile] «Display Name» field → Stored XSS
│ inject <script src=...> that loads a malicious JS
▼
[Attacker HTTP server] script.js → POST to /update_email.php (CSRF)
│ the admin's browser runs the stored XSS
▼
[CSRF] admin email + password get reset → admin:pwnedadmin
▼
[Admin Panel] log in as admin → flag1. Initial access — weak credentials
The application lives at http://10.10.177.6/ and presents a Login form. The first link in the chain is the humblest: a test account left behind by oversight, with a trivial password.
# Open the application in your browser:
http://10.10.177.6/
# Test (default) credentials:
Username: testuser
Password: password123Result: we log in as a low-privilege user. Not much on its own, but it's the foothold we need to reach the profile features.
Why it matters: a weak or default credential rarely grants direct access to anything critical, but it almost always opens the first door. In a chain, that minimal access is what enables everything else.
Resumen ejecutivo — Chaining Vulnerabilities es un room de TryHackMe centrado en el arte de encadenar vulnerabilidades: unas credenciales débiles abren la puerta, un Stored XSS en el perfil de usuario permite inyectar JavaScript, y la ausencia de protección CSRF hace que ese script —ejecutado en el navegador del administrador— resetee sus credenciales. El resultado es un account takeover completo del panel de administración.
| Plataforma | TryHackMe |
| Sistema operativo | Linux / PHP |
| Dificultad | Easy |
| Room | Chaining Vulnerabilities |
| IP objetivo | 10.10.177.6 |
Mapa del ataque
[Login] credenciales débiles testuser:password123
│ acceso como usuario de bajo privilegio
▼
[Editar perfil] campo «Display Name» → Stored XSS
│ se inyecta <script src=...> que carga un JS malicioso
▼
[Servidor del atacante] script.js → POST a /update_email.php (CSRF)
│ el navegador del admin ejecuta el XSS almacenado
▼
[CSRF] se resetean email + password del admin → admin:pwnedadmin
▼
[Admin Panel] login como admin → flag1. Acceso inicial — credenciales débiles
La aplicación vive en http://10.10.177.6/ y presenta un formulario de Login. El primer eslabón de la cadena es el más humilde: una cuenta de prueba dejada por descuido con una contraseña trivial.
# Abrir la aplicación en el navegador:
http://10.10.177.6/
# Credenciales de prueba (por defecto):
Username: testuser
Password: password123Resultado: entramos como un usuario de bajo privilegio. No es gran cosa por sí solo, pero es el punto de apoyo que necesitamos para llegar a las funciones de perfil.
Por qué importa: una credencial débil o por defecto rara vez da acceso directo a lo crítico, pero casi siempre abre la primera puerta. En una cadena, ese acceso mínimo es lo que habilita el resto.
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 accountEsto es contenido de nivel USER ACCESS — se desbloquea gratis, sin pago. El resto del writeup (y todo lo demás de este nivel) se abre en cuanto inicies sesión.
Crear una cuenta gratis