Una de las mejores maneras de practicar de manera segura ataques y vulnerabilidades web es mediante Juice Shop, una aplicación de tienda web vulnerable a propósito, especialmente respecto al top 10 de vulnerabilidades web de OWASP.

Instalada en una máquina local, podemos atacar y practicar todo lo que queramos sin problemas ni líos.

Una de las mejores maneras de instalar esta aplicación es con Docker. Estos son los pasos para hacerlo en un Linux Ubuntu (21.04 en este caso).

Instalando Docker

Etoy trabajando en un Ubuntu que no tenía ninguna versión antigua de Docker instalada. Si en nuestro caso las tenemos, lo primero es desinstalarlas con:

sudo apt-get remove docker docker-engine docker.io containerd runc

Ahora, procedemos a instalar los requerimientos, en caso de no tengamos alguno:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

A continuación, añadimos la llave GPG oficial de Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Una vez hecho eso, hemos de añadir el repositorio estable de Docker a nuestros repositorios de Ubuntu:

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instalando el motor de Docker

Bien, ya podemos instalar el motor de Docker con:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Verificamos que funciona, ejecutando el contenedor hello-word.

sudo docker run hello-world

Como no lo encontrará instalado la primera vez, lo traerá (pull) y procederá a ejecutarlo e informar de que Docker funciona. El contenedor «Hello World» no sirve para otra cosa.

Para instalar otras versiones de Docker o repositorios que no sean el estable, podemos consultar la página oficial.

Bien, ahora instalemos el contenedor de Juice Shop.

Instalando OWASP Juice Shop con Docker

Es muy sencillo, primero traemos el contenedor y luego lo corremos:

sudo docker pull bkimminich/juice-shop

Eso descarga la última imagen latest. Una vez terminada ejecutamos Juice Shop con:

sudo docker run -d -p 3000:3000 bkimminich/juice-shop
  • -d significa daemon para que corra como demonio.
  • -p es para publicar un puerto específico. Especifica un puerto de la máquina anfitriona (el primero número antes de los dos puntos) y lo vincula a un puerto del contenedor Docker. Al poner 3000:3000 significa que el puerto 3000 de nuestra máquina anfitriona estará vinculado al puerto 3000 del contenedor Docker cuando esté ejecutándose.

De esta manera, cuando visitemos en nuestra máquina:

127.0.0.1:3000

Conectará con el puerto 3000 del contenedor y tendremos acceso a la tienda, de modo que podremos practicar en local tranquilamente.

Para detener el contenedor una vez terminado el trabajo, primero tenemos que comprobar cuál es el ID del docker a detener.

sudo docker ps # Nos muestra los contenedores y su ID, copiamos el del contenedor a detener
sudo docker stop c6f524e50d3f # Detengo el contenedor con el ID objetivo

Desinstalar el contenedor Juice Shop de Docker

Lo hacemos como con cualquier otro contenedor. Primero listamos los contenedores:

sudo docker container ls -a

Copiamos el ID del contenedor a borrar y lo pasamos a la instrucción rm:

sudo docker container rm cf93c2436ece

Otra instrucción útil es:

 sudo docker ps -a

Que nos permite ver los procesos de Docker y nos indica los contenedores que están corriendo, el tiempo que llevan, los que se han detenido, etc.