Corridor - TryHackMe
xhetic
@xhetic
📚 Esta publicación pertenece a la colección:
Corridor - TryHackMe Walkthrough
Bienvenido a mi writeup de Corridor de TryHackMe.
Una room puramente web donde el objetivo es explotar una vulnerabilidad IDOR: las puertas de un pasillo cifran su identificador con MD5, y el truco está en deducir el patrón para acceder a una puerta que no debería ser visible.
Room: Corridor
Dificultad: Easy
OS: Linux
Objetivo: Capturar la flag de la room
🎯 Información del Objetivo
IP Target: 10.114.155.51
🔍 Fase 1: Reconocimiento (RECON)
Comprobación de Conectividad
Empiezo confirmando que la máquina está activa:
ping -c1 10.114.155.51-c1→ Envía solo 1 paquete ICMP y para
64 bytes from 10.114.155.51: icmp_seq=1 ttl=62 time=43.1 ms
El TTL es 62, lo que indica que posiblemente estamos ante una máquina Linux.
💡 Referencia rápida de TTL:
- TTL ≈ 64 → Linux/Unix
- TTL ≈ 128 → Windows
Escaneo de Puertos
Comienzo con un escaneo rápido sobre todos los puertos:
nmap -p- --open --min-rate 5000 -sS -n -Pn 10.114.155.51-p-→ Escanea los 65535 puertos--open→ Muestra solo puertos abiertos--min-rate 5000→ Mínimo 5000 paquetes por segundo-sS→ SYN scan (stealth)-n→ Sin resolución DNS-Pn→ Sin ping previo, trata el host como activo
PORT STATE SERVICE 80/tcp open http
Solo hay un puerto abierto. Profundizo con un escaneo de versiones:
nmap -p80 -sCV 10.114.155.51-sC→ Scripts NSE por defecto-sV→ Detección de versiones
PORT STATE SERVICE VERSION 80/tcp open http Werkzeug httpd 2.0.3 (Python 3.10.2) |_http-title: Corridor
El servicio web corre sobre Werkzeug 2.0.3 con Python 3.10.2.
📁 Fase 2: Enumeración
Búsqueda de Exploits
Compruebo si existe algo público para esta versión de Werkzeug:
searchsploit werkzeugWerkzeug - 'Debug Shell' Command Execution | multiple/remote/43905.py Werkzeug - Debug Shell Command Execution (Metasploit) | python/remote/37814.rb
Ambos exploits requieren que el modo debug de Werkzeug esté activado. Lo compruebo en la web y no está habilitado, por lo que estos no me sirven aquí.
Exploración de la Web
Visito la página principal y encuentro una imagen de un pasillo con puertas. Sin nada más a la vista a primera vista.

Reviso el código fuente, compruebo si existe robots.txt y busco cookies. No hay nada relevante en ninguno de los tres.
Fuzzing de Directorios
Lanzo dirb con una wordlist de directorios para buscar rutas ocultas:
dirb http://10.114.155.51 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txtPrimera pasada con wordlist de directorios
Sin resultados. Lo intento de nuevo con una wordlist orientada a archivos:
dirb http://10.114.155.51/ /usr/share/seclists/Discovery/Web-Content/raft-small-files.txtSegunda pasada con wordlist de archivos comunes
Tampoco aparece nada. El fuzzing convencional no funciona aquí.
Descubrimiento del Patrón — Puertas Clickables
Volviendo a la página me doy cuenta de que las puertas de la imagen son clickables y cada una lleva a una URL diferente. Las rutas tienen este aspecto:
/c4ca4238a0b923820dcc509a6f75849b
/c81e728d9d4c2f636f067f89cc14862c
/eccbc87e4b5ce2fe28308fd9f2a7baf3
/a87ff679a2f3e71d9181a67b7542122c
/e4da3b7fbbce2345d7772b0674a318d5
/1679091c5a880faf6fb5e6087eb1b2dc
/8f14e45fceea167a5a36dedd4bea2543
/c9f0f895fb98ab9159f51fd0297e236d
/45c48cce2e2d7fbdea1afc51c7c6ad26
/d3d9446802a44259755d38e6d163e820
/6512bd43d9caa6e02c990b0a82652dca
/c20ad4d76fe97759aa27a0c99bff6710
/c51ce410c124a10e0db5e4b97fc2af39Trece rutas, cada una con una cadena de 32 caracteres hexadecimales. Parece que podría ser un hash MD5. Las meto en CrackStation para comprobarlo:

Confirmado: las trece puertas corresponden a los hashes MD5 de los números 1 al 13, en orden. Cada sala a la que llevan está vacía — son habitaciones sin contenido visible.
La room menciona explícitamente IDOR. Esto encaja: los identificadores de los recursos son predecibles y puedo intentar acceder a otros fuera del rango visible.
🚀 Fase 3: Explotación — IDOR por Hash MD5
IDOR (Insecure Direct Object Reference) ocurre cuando una aplicación expone referencias directas a objetos internos — en este caso URLs — sin validar que el usuario tiene permiso para acceder a ellos. Si el identificador es predecible, puedo iterar y acceder a recursos no previstos.
Con la secuencia del 1 al 13 identificada, intento ampliar el rango. Genero los hashes MD5 de los números siguientes y pruebo manualmente:
echo -n "14" | md5sum
echo -n "15" | md5sumaab3238922bcc25a6f606eb525ffdc56 - 9bf31c7ff062936a96d3c8bd1f8f2ff3 -
Accedo a ambas URLs y no encuentro nada. La secuencia no continúa hacia arriba.
Pruebo entonces en la dirección contraria — antes del número 1 está el 0:
echo -n "0" | md5sumcfcd208495d565ef66e7dff9f98764da -
Accedo a http://10.114.155.51/cfcd208495d565ef66e7dff9f98764da y esta vez sí encuentro contenido. La habitación oculta tiene la flag.
🚩 Flag
La sala correspondiente al número 0 — invisible en la interfaz, pero directamente accesible — contiene la flag de la room:

🚩 Flag capturada!
📊 Resumen
Cadena de Ataque
Nmap → Puerto 80 (Werkzeug Python) → dirb sin resultados → puertas clickables → URLs con hashes MD5 → CrackStation → secuencia 1-13 → IDOR → probar 14,15 (fallo) → probar 0 → hash MD5(0) → sala oculta → flag
Herramientas Utilizadas
- nmap — Reconocimiento de puertos y servicios
- searchsploit — Búsqueda de exploits en ExploitDB
- dirb — Fuzzing de directorios y archivos web
- CrackStation — Identificación de hashes MD5
🛡️ Vulnerabilidades y Mitigaciones
| Vulnerabilidad | Severidad | Mitigación |
|---|---|---|
| IDOR en URLs con hashes predecibles | ALTA | Usar identificadores aleatorios no predecibles (UUID v4) en lugar de hashes de valores secuenciales |
| Ausencia de control de acceso en rutas | ALTA | Validar en el servidor que el usuario tiene permiso para acceder al recurso solicitado, independientemente de si conoce el identificador |
📚 Referencias
🔗 Si quieres seguir aprendiendo y mejorando tus habilidades, explora mis writeups paso a paso en Shadows y mis apuntes y guías técnicas en Shards.
Happy Hacking! 🎩🔐
Sigueme en TryHackMe :
Writeup realizado con fines educativos. Recuerda solo realizar pentesting en entornos autorizados.