Laboratorio de WebGoat: lecciones guiadas de seguridad web con WebWolf en tu propia copia

WebGoat es un curso guiado de seguridad web. Cada lección explica una debilidad, como la inyección, el control de acceso defectuoso, la deserialización insegura, los errores con JWT o el path traversal, y luego pide al alumno que la use, y la lección se marca como completada cuando lo hace. WebWolf va a su lado para las lecciones que necesitan una segunda parte.

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

Una primera introducción a cada clase de debilidad con la explicación al lado, más nociones de criptografía, tokens y deserialización. Es adecuado para una primera lección y para trabajo para casa, porque las lecciones dicen qué hacer.

Ejecútalo en tu navegador

WebGoat es una aplicación Java y recibe 1 GB, el máximo de los tres laboratorios de seguridad, así que tarda unos segundos más en iniciarse. El progreso del alumno dura mientras el laboratorio está en marcha.

  1. 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».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca WebGoat.
  3. 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.
  4. Ábrelo. En la página del laboratorio hay dos enlaces, WebGoat y WebWolf. Abre WebGoat, elige Register e inventa un nombre de usuario y una contraseña para esta copia. WebWolf es para las lecciones que indican usarlo.

Qué pedir a los alumnos que entreguen

Una captura de pantalla de cada lección marcada como completada, con la dirección del propio laboratorio visible, y para cada una un párrafo con sus propias palabras sobre por qué existe la debilidad y cómo la previene un desarrollador. La segunda mitad te dice si la lección se entendió o solo se pasó con clics.

El código en GitHub

El archivo compose ejecuta la imagen pública de la propia WebGoat, fijada a una versión, detrás de un pequeño nginx que lleva el enlace del laboratorio a la página de WebGoat. WebGoat tiene licencia GPL-2.0 y nosotros no la distribuimos.

Una lección básica en este laboratorio

WebGoat Basics y WebGoat 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 comprueban desde su terminal que ambos sitios web funcionan, se registran, abren una primera lección y visitan WebWolf. En la segunda abren las herramientas de desarrollo que usa casi toda lección de WebGoat y ven una respuesta desde el terminal.

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é lecciones completar y qué entregar.

  1. 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-webgoat con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. 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.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. 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

¿Qué es WebWolf?
Una segunda aplicación que acompaña a WebGoat, para las lecciones que necesitan una parte distinta del alumno, como un lugar donde recibir un mensaje. La página del laboratorio tiene un enlace a cada una.
¿Se conserva el progreso cuando el laboratorio se detiene?
No. Las lecciones de un alumno duran mientras el laboratorio está en marcha, así que un curso largo es mejor hacerlo en sesiones en las que cada una complete algunas lecciones.
¿Sirve WebGoat para trabajo que se manda a casa?
Sí, porque cada lección dice qué hacer y se marca como completada cuando el alumno lo hace. Pide una captura de pantalla de cada lección completada con la dirección del propio laboratorio a la vista y un párrafo sobre por qué existe la debilidad y cómo la evita un desarrollador; el progreso dura solo mientras el laboratorio está en marcha.