Laboratorios de hacking
Cómo crear una red Docker aislada para tu laboratorio
Crea una red Docker sin acceso a internet, ejecuta OWASP Juice Shop en ella y publica una copia para el navegador solo en 127.0.0.1.
Monta un laboratorio que puedes atacar: archivo de alcance, puertos de Docker en loopback, red aislada, cuaderno de notas y desmontaje limpio.
Un laboratorio doméstico es legal cuando cada sistema que atacas es tuyo o pertenece a alguien que te dio permiso por escrito. Todo lo demás se deriva de esa regla. Tu laptop, una máquina virtual que creaste y un contenedor que iniciaste están dentro del alcance. El Wi-Fi de tu vecino, la red de tu escuela y "ese sitio que parece vulnerable" no lo están, aunque la prueba sea inofensiva.
Escribe la regla antes de instalar nada. Es fácil que la autorización se vuelva difusa cuando una herramienta ya está corriendo y un objetivo parece interesante.
Los comandos de abajo se ejecutaron en Windows con Docker 29.8.2. Otras versiones pueden mostrar textos algo distintos.
Mantén el laboratorio en una sola carpeta para encontrarlo y borrarlo después:
mkdir -p lab/notes
cd labCrea scope.md en esa carpeta con los objetivos que te permites probar:
# Alcance
Objetivos permitidos:
- 127.0.0.1 (contenedores que yo inicié, puertos vinculados a loopback)
No permitido:
- Cualquier otra cosa, hasta tener permiso por escrito de su dueño.Parece trivial. Aun así evita que apuntes un escáner a una dirección que nunca quisiste probar.
docker --versionDocker version 29.8.2, build 7fc2dffSi el comando falla, instala Docker primero. Si docker info dice que no alcanza el daemon, inicia Docker Desktop o el servicio de Docker y vuelve a intentarlo.
Los contenedores son la forma más sencilla de ejecutar software vulnerable sin instalarlo en tu sistema. El riesgo está en el mapeo de puertos. La documentación de publicación de puertos de Docker dice que un mapeo -p sin dirección deja el puerto disponible fuera del host. Una aplicación vulnerable a propósito no debe quedar así.
Indica la dirección de loopback en el mapeo. Este ejemplo usa la imagen de un servidor web simple en lugar de un objetivo de laboratorio:
docker run -d --rm --name lab-check -p 127.0.0.1:18080:80 caddy:2
docker port lab-check80/tcp -> 127.0.0.1:18080127.0.0.1:18080 significa que solo tu equipo alcanza el puerto. Compáralo con un mapeo sin dirección:
docker stop lab-check
docker run -d --rm --name lab-check -p 18081:80 caddy:2
docker port lab-checklab-check
80/tcp -> 0.0.0.0:18081
80/tcp -> [::]:18081Aquí Docker escucha en 0.0.0.0 y [::], que son todas las interfaces. Que otros dispositivos puedan llegar de verdad depende de tu firewall y tu red, así que no confíes en eso. Pon 127.0.0.1 en cada comando del laboratorio y verifica con docker port cada vez.
Algunos ejercicios no necesitan red, como leer un script sospechoso o ejecutar un parser sobre un archivo. El driver de red none de Docker deja al contenedor sin red, salvo el loopback:
docker run --rm --network none alpine:3.22 ip -o link | cut -d' ' -f2lo:Solo existe la interfaz de loopback (lo). Usa --network none para todo lo que no quieras que hable con el exterior, y trata cualquier muestra descargada como hostil hasta que la hayas leído.
Crea un archivo por sesión en notes/. Anota la fecha, el objetivo, lo que intentaste y lo que pasó, en ese orden, mientras trabajas:
## 2026-01-15 14:20, primera ejecución
- Objetivo: juice-shop-lab, http://127.0.0.1:3000
- Meta: ver qué devuelve un inicio de sesión fallido
- Comando: curl -i http://127.0.0.1:3000/rest/user/login
- Resultado: (pega lo que viste, no lo que esperabas)
- Siguiente: ...El cuaderno cumple dos funciones. Te muestra qué hiciste cuando un resultado te sorprende, y es el hábito del que nace un informe de verdad. Registra el comando que ejecutaste y la salida que obtuviste. No pegues la salida de una guía.
Detén lo que iniciaste y comprueba que no quede nada:
docker stop lab-check
docker ps -a --filter name=lab-check --format '{{.Names}}'lab-checkdocker stop imprime el nombre del contenedor. Como se inició con --rm, Docker lo elimina al detenerse, así que el segundo comando no imprime nada. Si también quieres borrar la imagen, usa docker image rm. Borra la carpeta lab solo cuando ya no necesites las notas.
Un laboratorio que puedes rehacer en pocos minutos vale más que uno que te da miedo tocar.
Ya tienes una carpeta con alcance, el hábito del loopback y una forma de detener todo. El siguiente artículo, Ejecutar OWASP Juice Shop con Docker, usa esta base para iniciar una aplicación web vulnerable a propósito. Lee antes la página del proyecto OWASP Juice Shop para saber qué vas a ejecutar.
Laboratorios de hacking
Crea una red Docker sin acceso a internet, ejecuta OWASP Juice Shop en ella y publica una copia para el navegador solo en 127.0.0.1.
Laboratorios de hacking
Estructure un informe de pentest y escriba un hallazgo que otra persona pueda reproducir, con evidencia, impacto, vector CVSS v4.0 y remediación.
Laboratorios de hacking
Ejecuta OWASP Juice Shop en un contenedor Docker limitado a tu equipo, comprueba que responde y detenlo sin dejar nada en ejecución.