Corridor - TryHackMe

xhetic

xhetic

@xhetic

TryHackMeLinuxEasy
Corridor - TryHackMe

📚 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
▶ output
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
▶ output
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
▶ output
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 werkzeug
▶ output
Werkzeug - '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.

Página principal — pasillo con puertas

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.txt

Primera 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.txt

Segunda 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
/c51ce410c124a10e0db5e4b97fc2af39

Trece rutas, cada una con una cadena de 32 caracteres hexadecimales. Parece que podría ser un hash MD5. Las meto en CrackStation para comprobarlo:

CrackStation revela que los hashes son MD5 de los números del 1 al 13

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" | md5sum
▶ output
aab3238922bcc25a6f606eb525ffdc56  -
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" | md5sum
▶ output
cfcd208495d565ef66e7dff9f98764da  -

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 encontrada en la sala /0
Click para ver imagen

🚩 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

VulnerabilidadSeveridadMitigación
IDOR en URLs con hashes predeciblesALTAUsar identificadores aleatorios no predecibles (UUID v4) en lugar de hashes de valores secuenciales
Ausencia de control de acceso en rutasALTAValidar 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.