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.
Ejecuta OWASP Juice Shop en un contenedor Docker limitado a tu equipo, comprueba que responde y detenlo sin dejar nada en ejecución.
OWASP Juice Shop es una aplicación web intencionalmente vulnerable. Puedes ejecutarla en un contenedor Docker en tu propio equipo, abrirla en el navegador en http://127.0.0.1:3000 y practicar seguridad web sobre ella sin tocar sistemas de nadie más. El proyecto dice incluir vulnerabilidades de todo el OWASP Top Ten, además de otras que aparecen en aplicaciones reales. A continuación están los comandos, qué revisar después de cada uno, cómo mantener el puerto privado y cómo detener el laboratorio.
Juice Shop tiene fallos a propósito. Mantenlo en una máquina y en una red que controles, y nunca lo expongas a internet.
Ejecuta estos dos comandos en una terminal:
docker --version
docker infoEl primero muestra la versión del cliente de Docker. El segundo se conecta a Docker Engine y muestra su configuración. Si docker info indica que no puede conectarse al daemon, inicia Docker Desktop o el servicio de Docker y vuelve a ejecutar el comando. El texto exacto del error depende de la plataforma, así que sigue la documentación de instalación de Docker si la solución no es obvia.
La documentación del proyecto menciona la imagen bkimminich/juice-shop. El README del proyecto la ejecuta sin etiqueta, lo que descarga latest. Si quieres un laboratorio repetible, elige una etiqueta de versión en la página de Docker Hub y añádela al nombre de la imagen (bkimminich/juice-shop:<tag>), para saber qué versión estás probando.
docker run --rm --name juice-shop-lab \
-p 127.0.0.1:3000:3000 \
bkimminich/juice-shopLa opción -p publica un puerto del contenedor en la máquina host. El valor 127.0.0.1:3000:3000 tiene tres partes: la dirección del host, el puerto del host y el puerto del contenedor. La referencia de publicación de puertos de Docker explica que un mapeo sin dirección puede escuchar en todas las interfaces del host. Poner 127.0.0.1 primero hace que el laboratorio solo sea accesible desde tu propia máquina.
La opción --rm elimina el contenedor cuando se detiene. El comando se ejecuta en primer plano, así que la terminal sigue mostrando logs hasta que lo interrumpas. La primera ejecución descarga la imagen, lo que puede tardar un rato.
Abre http://127.0.0.1:3000 en un navegador de la misma máquina. Deberías ver la página de inicio de Juice Shop. Si no carga, revisa la terminal en busca de errores y ejecuta docker ps en otra terminal para confirmar que el contenedor está activo y que el mapeo de puertos es correcto. Los clientes VPN, los proxies y las redes de máquinas virtuales pueden cambiar cómo se comporta el tráfico local, así que revisa también esas capas antes de tocar las opciones.
No cambies 127.0.0.1 por 0.0.0.0 para que la página cargue. Eso expone el laboratorio a otros dispositivos de tu red.
Antes de intentar cualquier desafío, observa cómo se comunican el navegador y el servidor. Abre las herramientas para desarrolladores, ve a la pestaña Red (Network) y recarga la página. Elige una solicitud y anota:
Content-Type;Puedes obtener la misma información desde la terminal:
curl -I http://127.0.0.1:3000En Windows PowerShell 5.1, curl es un alias de otro comando, así que escribe curl.exe.
La opción -I envía una solicitud HEAD y muestra solo las cabeceras de la respuesta. La RFC 9110 define los métodos, los códigos de estado y los campos de cabecera que estás viendo. Estas son las primeras líneas de lo que devolvió la imagen sin etiqueta en una ejecución (2026-11-08); otras versiones pueden diferir:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=UTF-8Anota lo que devuelve tu servidor y compáralo.
La documentación del proyecto describe los desafíos de entrenamiento y sus pistas. Lee ese material antes de intentar un exploit, y mantén todas las pruebas apuntando a 127.0.0.1. Conocer antes el ciclo de solicitud y respuesta facilita evaluar después los resultados de los escáneres, porque ves el tráfico que esas herramientas envían y reciben.
Si el contenedor se ejecuta en primer plano, presiona Ctrl+C en su terminal. Como usaste --rm, Docker elimina el contenedor en cuanto se detiene.
Si perdiste esa terminal, detén el contenedor desde otra:
docker stop juice-shop-labDocker envía una señal de parada y espera a que el contenedor termine. Confirma que el laboratorio ya no está:
docker psSi el nombre del contenedor no aparece en la lista, el laboratorio está detenido. Cerrar la pestaña del navegador no detiene el contenedor, así que revisa siempre con docker ps.
Si el puerto ya está en uso, docker run falla con Bind for 127.0.0.1:3000 failed: port is already allocated. Elige otro puerto del host, como -p 127.0.0.1:3001:3000, y abre http://127.0.0.1:3001 en su lugar. Mantén la parte 127.0.0.1.
Si el contenedor se cierra de inmediato, lee los logs de la terminal. Busca la primera línea de error, no la última.
Si la primera ejecución tarda mucho, Docker está descargando la imagen y sus capas. Las siguientes empiezan más rápido porque Docker guarda la imagen localmente.
Un modelo de lenguaje puede explicar un código de estado o ayudarte a ordenar tus notas, y NotHoly es un lugar para hacerlo. También puede equivocarse al interpretar una respuesta y no reemplaza la autorización ni la validación manual. Pega solo salidas de tu propio laboratorio, nunca cookies de sesión, tokens ni datos de un objetivo real.
Escribe tus notas a partir de lo que observaste y luego compáralas con las referencias de abajo.
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
Monta un laboratorio que puedes atacar: archivo de alcance, puertos de Docker en loopback, red aislada, cuaderno de notas y desmontaje limpio.