Laboratorio de OWASP Juice Shop: una tienda web vulnerable que atacar en tu propia copia
OWASP Juice Shop es una tienda en línea insegura a propósito, con más de cien retos del OWASP Top 10: inyección, autenticación defectuosa, control de acceso defectuoso, cross-site scripting, errores de configuración de seguridad y más. Este laboratorio la inicia en la copia privada de cada alumno, de modo que pueda atacarla a ella y a nada más.
Cada objetivo está dentro de la copia de laboratorio del propio alumno, que no tiene ruta a internet ni a ningún otro alumno, así que lo único que puede atacar es la aplicación que el laboratorio inició para él. La regla se enuncia al principio del laboratorio: ataca tu propia copia, nunca un sitio que no sea tuyo.
Qué aprenden los alumnos
Cómo funcionan las debilidades, para construir y defender software que no las tenga. Un Score Board lista todos los retos por dificultad y marca cada uno en verde cuando se resuelve. No está enlazado desde ningún sitio: encontrarlo es el primer reto. Las pistas del laboratorio son los hábitos de quien prueba software: mirar lo que el navegador envía y recibe, leer lo que hace el propio código de la página y preguntarse de cada entrada qué da por sentado el programa sobre ella.
Ejecútalo en tu navegador
La tienda se inicia en unos segundos y olvida su estado cuando el laboratorio se detiene, así que el alumno que vaya a continuar mañana copia el código de continuación que ofrece el Score Board.
- Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
- Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca OWASP Juice Shop.
- Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
- Ábrelo. En la página del laboratorio, pulsa «Abrir» para ver la tienda. Encuentra el Score Board y trabaja los retos por dificultad.
Qué pedir a los alumnos que entreguen
Pruebas en dos mitades. Primero, una captura de pantalla de los retos resueltos en el Score Board, con la dirección del propio laboratorio visible en el navegador para que quede claro que es su copia. Segundo, para cada uno, una explicación escrita con sus propias palabras de qué es la debilidad, la entrada exacta que usaron y por qué funcionó, qué podría hacer con ella un atacante y cómo debería haberse escrito el código. La segunda mitad te dice si se entendió o si se copió de una guía paso a paso.
Nada de esto se califica automáticamente, y una copia es privada del alumno, aunque el personal que imparte el módulo puede abrirla, y eso queda registrado en el registro de acceso que el alumno puede leer.
El código en GitHub
El archivo compose ejecuta la imagen pública del propio proyecto, fijada a una versión para que el laboratorio no cambie a una clase entre una lección y otra, como una cuenta sin privilegios y con menos de 512 MB. Juice Shop tiene licencia MIT y nosotros no lo distribuimos. Algunos retos que necesitan internet o un servicio de IA no se pueden resolver en un laboratorio, que no tiene salida.
Una lección básica en este laboratorio
Juice Shop Basics y Juice Shop Basics 2 son lecciones breves hechas en este laboratorio, cada una con la regla de que un alumno ataca su propia copia y nada más. En la primera encuentran el Score Board y resuelven tres de los desafíos más fáciles, dos de ellos con un botón Ejecutar que escribe un comando curl en su terminal. En la segunda encuentran una página pensada para el propietario y prueban el cross-site scripting.
Una cuenta personal gratuita las recibe en el módulo Basics, que está en Inicio, cada centro puede copiarlas de la carpeta Basics de la Biblioteca, y un centro nuevo las tiene en un módulo llamado Lab Basics (Sample). Son deliberadamente breves: muestran a un docente lo que es una lección hecha en un laboratorio, y el laboratorio hace el resto. Copia una en un módulo propio para cambiarla.
Asígnalo como trabajo
Indica en la tarea qué retos completar y qué entregar.
- Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-juice-shop con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
- Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
- Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
- Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.
Preguntas frecuentes
- ¿Pueden los alumnos atacar un sitio web real con esto?
- No. Una copia de laboratorio no tiene ruta a internet ni a la copia de otro alumno, así que el único objetivo es la tienda que inició el laboratorio.
- ¿Qué temas cubre Juice Shop?
- El OWASP Top 10 en una aplicación realista: inyección, debilidades de autenticación y de sesión, control de acceso, fallos criptográficos, errores de configuración de seguridad y cross-site scripting, y la evaluación de vulnerabilidades como método.
- ¿Qué deben entregar los alumnos en Juice Shop?
- Pruebas en dos partes: una captura de pantalla de los retos resueltos en el Score Board con la dirección del propio laboratorio a la vista, y para cada uno una explicación escrita con sus palabras de la debilidad, la entrada exacta usada, por qué funcionó y cómo debería haberse escrito el código. Nada se califica automáticamente, así que la parte escrita muestra si se entendió.