> For the complete documentation index, see [llms.txt](https://novahacking.gitbook.io/anonymous17/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://novahacking.gitbook.io/anonymous17/ctf/dockerlabs.md).

# Dockerlabs

**Enlaces:** [Plataforma oficial de DockerLabs](https://dockerlabs.es) · [Mi perfil en DockerLabs (anonymous17)](https://dockerlabs.es/perfil/anonymous17)

## ¿Qué es DockerLabs? 🐳

**DockerLabs** es una plataforma gratuita y comunitaria para practicar **hacking ético, pentesting y resolución de CTFs (Capture The Flag)** mediante laboratorios vulnerables basados en **contenedores Docker**.

Su principal ventaja es la facilidad para desplegar máquinas en nuestro propio equipo, sin necesidad de preparar una máquina virtual completa para cada reto. Esto permite centrarnos en el proceso de **reconocimiento, enumeración, explotación y escalada de privilegios**, utilizando herramientas y técnicas habituales en seguridad ofensiva.

Aunque normalmente hablamos de «máquinas», muchos de estos laboratorios son contenedores que comparten el kernel del sistema anfitrión. Su diseño permite practicar en un entorno controlado, pero debemos seguir tratándolos como sistemas deliberadamente vulnerables.

## Créditos al creador y a la comunidad

El proyecto fue impulsado por **El Pingüino de Mario (Mario Álvarez Fernández)**, a quien corresponde reconocer el trabajo de creación y mantenimiento de esta plataforma educativa. También es importante destacar la participación del **equipo de DockerLabs**, sus moderadores y los distintos autores de máquinas, quienes aportan nuevos desafíos y contribuyen al crecimiento del proyecto.

La plataforma permite que otras personas desarrollen y propongan sus propios laboratorios. Por esta razón, **cada máquina puede tener un creador diferente**, al que también debemos dar crédito cuando documentemos su resolución.

* [Equipo oficial de DockerLabs](https://dockerlabs.es/equipo)
* [Cómo crear una máquina para DockerLabs](https://dockerlabs.es/como-se-crea-una-maquina)

## ¿Qué tipos de CTFs podemos encontrar?

DockerLabs ofrece laboratorios con distintos niveles de dificultad y enfoques técnicos. Entre las **categorías que podemos explorar en su catálogo** encontramos:

* **Hacking Web:** análisis de aplicaciones web, autenticación, inyecciones, subida de archivos y otras vulnerabilidades.
* **Bug Bounty:** retos orientados a identificar y comprender fallos de seguridad en aplicaciones o servicios dentro de un laboratorio.
* **Hacking CMS:** explotación y enumeración de gestores de contenido, plugins y configuraciones inseguras.
* **Hacking Infraestructura:** reconocimiento de redes, servicios, credenciales, permisos y configuraciones del sistema.
* **Pivoting:** laboratorios que requieren acceder a otros equipos o redes a través de una máquina intermedia.

Los retos pueden combinar varias técnicas. Por ejemplo, una máquina puede comenzar con una vulnerabilidad web y terminar con una escalada de privilegios mediante **SUID**, permisos de **sudo**, tareas programadas o una configuración insegura.

### Niveles de dificultad

* **Muy Fácil:** ideal para empezar a utilizar herramientas y familiarizarse con el flujo básico de un CTF.
* **Fácil:** introduce técnicas de enumeración y explotación que requieren relacionar distintas pistas.
* **Medio:** suele exigir un análisis más profundo y combinar varios conceptos.
* **Difícil:** plantea escenarios más complejos que pueden incluir múltiples etapas, técnicas avanzadas o una enumeración exigente.

La dificultad es orientativa: una máquina «Fácil» también puede enseñarnos una técnica completamente nueva.

## ¿Qué hace interesante a DockerLabs?

Una de las grandes virtudes de la plataforma es que **no se limita a ofrecer archivos para descargar**. También incorpora funcionalidades que favorecen el aprendizaje y la participación de la comunidad:

* **Despliegue rápido y bajo consumo de recursos:** gracias a Docker, podemos trabajar con laboratorios ligeros y eliminarlos cuando terminemos.
* **Catálogo variado:** permite buscar máquinas y filtrarlas por **categoría, dificultad, fecha o estado de resolución**, entre otros criterios.
* **Writeups de la comunidad:** es posible consultar resoluciones y explicaciones de otros participantes para aprender diferentes metodologías. Algunos se presentan en formato de **texto o vídeo**.
* **Ranking de writeups:** reconoce y da visibilidad a las personas que documentan las soluciones de los desafíos.
* **Ranking de creadores de máquinas:** destaca a quienes diseñan y comparten nuevos laboratorios, fomentando la creación de contenido técnico.
* **Autores y valoraciones:** podemos conocer quién creó una máquina y utilizar la información de la comunidad para descubrir nuevos retos.
* **Participación abierta:** además de resolver máquinas, los usuarios pueden proponer laboratorios originales y compartir su documentación.

Los **rankings de writeups y de creadores** son especialmente interesantes porque dan reconocimiento a dos contribuciones distintas: **enseñar cómo se resuelve una máquina** y **construir una máquina para que otros aprendan**.

## ¿Cómo empezar a resolver una máquina?

### 1. Preparar el entorno

Necesitamos un sistema Linux con **Docker** instalado y funcionando. Podemos trabajar, por ejemplo, desde **Arch Linux**, Kali Linux o Debian. La página oficial incluye instrucciones específicas para distintas distribuciones.

### 2. Elegir y descargar un laboratorio

Entramos en [DockerLabs](https://dockerlabs.es), buscamos una máquina apropiada para nuestro nivel y descargamos el archivo que proporciona la plataforma. Para una primera práctica, recomiendo comenzar por una de dificultad **Muy Fácil**.

Generalmente recibiremos un archivo comprimido con la imagen del laboratorio en formato `.tar` y un script llamado `auto_deploy.sh`. Debemos descomprimirlo y situarnos en el directorio que contiene esos archivos.

### 3. Desplegar la máquina

Siguiendo las [instrucciones oficiales](https://dockerlabs.es/instrucciones-uso), ejecutamos el script de despliegue junto al archivo `.tar` correspondiente:

```bash
sudo bash auto_deploy.sh laboratorio.tar
```

Sustituimos `laboratorio.tar` por el nombre real del archivo descargado. El script se encarga de preparar el contenedor y mostrarnos los datos necesarios para comenzar, como la **IP del objetivo**.

En laboratorios de **pivoting** puede ser necesario proporcionar varios archivos `.tar` para desplegar las distintas máquinas y su red. No debemos asumir que todos los desafíos tienen una única máquina.

> **Importante:** revisa la procedencia del archivo y del script antes de ejecutarlo con `sudo`. Al tratarse de entornos vulnerables, es recomendable practicar en un equipo o entorno de laboratorio controlado y evitar exponer sus servicios a Internet.

### 4. Comenzar la enumeración

Una vez obtenida la IP, podemos verificar la conectividad y empezar a identificar los servicios expuestos. A partir de ahí, seguiremos una metodología ordenada:

1. **Reconocimiento:** descubrir puertos, servicios y versiones.
2. **Enumeración:** investigar páginas web, directorios, usuarios, archivos y posibles puntos de entrada.
3. **Explotación:** comprobar si existe una vulnerabilidad aprovechable para acceder al sistema.
4. **Escalada de privilegios:** buscar una forma de obtener permisos superiores, cuando el desafío lo requiera.
5. **Documentación:** registrar los comandos, resultados, errores, pistas y el razonamiento seguido.

El objetivo no es ejecutar herramientas sin comprenderlas, sino **entender por qué funciona cada técnica**.

### 5. Detener y eliminar el laboratorio

Según la documentación oficial, podemos finalizar el despliegue con **Ctrl + C** en la terminal donde está ejecutándose `auto_deploy.sh`. El script gestiona la eliminación del laboratorio. En escenarios con varias máquinas, debemos leer cuidadosamente cualquier confirmación antes de borrar recursos de Docker.

## Writeups, aprendizaje y contribuciones

En esta sección de **NovaHacking** documento las máquinas de DockerLabs que voy resolviendo. En cada writeup intento explicar **cómo llegué a una conclusión**, qué información devolvieron los comandos y por qué elegí cada paso, manteniendo las referencias a los resultados obtenidos.

Si estás comenzando, te recomiendo **intentar resolver la máquina por tu cuenta antes de consultar un writeup**. Si te atascas, puedes revisar una pista o una sección concreta y continuar investigando.

Y si más adelante te interesa crear tus propios desafíos, DockerLabs permite enviar máquinas desarrolladas por la comunidad. La propuesta debe seguir las [reglas y requisitos de publicación](https://dockerlabs.es/enviar-maquina), que incluyen originalidad, pruebas y documentación de la resolución.

> **Créditos:** DockerLabs y su contenido pertenecen a sus respectivos autores. Esta página de NovaHacking es una guía introductoria independiente y no representa documentación oficial de la plataforma.
