Day 14: DoorDasher's Demise - Advent of Cyber 2025

xhetic

xhetic

@xhetic

TryHackMeAdventOfCyberDocker
Day 14: DoorDasher's Demise - Advent of Cyber 2025

📚 Esta publicación pertenece a las colecciones:

Day 14: DoorDasher's Demise - Advent of Cyber 2025

Este writeup pertenece al evento Advent of Cyber 2025 de TryHackMe. Si quieres seguir toda la serie, consulta nuestra colección completa del Advent of Cyber 2025.

Hoy nos enfrentamos a un desastre culinario en Wareville. El sitio de entrega de comida "DoorDasher" ha sido hackeado y renombrado a "Hopperoo", sirviendo platos... cuestionables (¿barba de Santa en lugar de fideos? 🤢).

Nuestra misión es infiltrarnos en el sistema a través de un contenedor de monitoreo, escapar de él y restaurar el sitio web original.

Room: Containers - DoorDasher's Demise
Dificultad: Medium
Objetivo: Realizar un Docker Escape abusando del socket de Docker montado, escalar privilegios y ejecutar el script de recuperación.


🐳 Entendiendo el Entorno

Al acceder al sistema, nos encontramos con un entorno Dockerizado. Para entender qué está corriendo, usamos el comando básico de Docker.

docker ps

Habiendo hecho esto, ya podemos contestar a la primera pregunta del día de hoy:

Pregunta: What exact command lists running Docker containers?

Respuesta: docker ps

Vemos varios contenedores, pero uno llama nuestra atención: uptime-checker. Parece ser un servicio de monitoreo.

También es importante recordar cómo se construyen estas imágenes. Las imagenes se construyen usando un archivo Dockerfile, este, contiene las instrucciones para levantar el contenedor.

Sabiendo esto, podemos responder a la segunda pregunta:

Pregunta: What file is used to define the instructions for building a Docker image?

Respuesta: Dockerfile


🔓 Docker Escape: Abusando del Socket

Accedemos al contenedor uptime-checker para investigar:

docker exec -it uptime-checker sh

Una vez dentro, verificamos si tenemos acceso al socket de Docker. Este archivo (docker.sock) es la vía de comunicación con el demonio de Docker en el host. Si un contenedor tiene acceso a él, básicamente tiene control total sobre el motor de Docker.

ls -la /var/run/docker.sock

¡Bingo! El socket está montado. Esto significa que podemos ejecutar comandos de Docker desde dentro del contenedor como si estuviéramos en el host.

Al ejecutar docker ps desde dentro, vemos todos los contenedores del host. Identificamos uno llamado deployer, que parece tener privilegios elevados.

Usamos nuestro acceso al socket para "saltar" al contenedor deployer:

docker exec -it deployer bash

🛠️ Restaurando el Servicio

Ya estamos dentro del contenedor deployer con privilegios de root. En el directorio raíz (/), encontramos un script llamado recovery_script.sh.

Lo ejecutamos para deshacer el daño de los conejos:

sudo /recovery_script.sh

El script restaura el sitio web original "DoorDasher". Además, al finalizar, nos revela la flag principal en el mismo directorio.

Pregunta: What's the flag?

Respuesta: THM{DOCKER_ESCAPE_SUCCESS}


🎁 Bonus: El Secreto en las Noticias

Hay un reto adicional: encontrar una contraseña oculta en el sitio de noticias que corre en el puerto 5002.

Visitamos http://MACHINE_IP:5002 y vemos un sitio de noticias sobre el escándalo de la comida. Si leemos con atención los titulares y artículos, notamos tres palabras que destacan (marcadas en rojo o que forman una frase coherente fuera de contexto).

Al juntar estas palabras, obtenemos la contraseña del usuario deployer.

Palabras ocultas en el sitio de noticias
Click para ver imagen

Bonus: There is a secret code contained within the news site running on port 5002; this code also happens to be the password for the deployer user! They should definitely change their password. Can you find it?

Respuesta: DeployMaster2025!


🏁 Conclusión

Hoy hemos aprendido una lección crítica sobre seguridad en contenedores: Nunca montes /var/run/docker.sock dentro de un contenedor a menos que sea absolutamente necesario.

Hacerlo rompe el aislamiento del contenedor y permite que un atacante que comprometa ese servicio tome el control total del host (Docker Escape).

Mañana publicaré el writeup del Día 15.

Si te perdiste la entrada del Día 13 sobre YARA, puedes leer el Día 13: YARA Mean One! aquí.

También puedes consultar todos los días del Advent of Cyber directamente en la colección completa del Advent of Cyber 2025.

¡Nos vemos mañana! 🎄

~ Xhetic