
WebGoat v2026.5
Aplicación web deliberadamente vulnerable con lecciones interactivas y desafíos para aprender seguridad de aplicaciones web y técnicas de pruebas de penetración.
WebGoat: Una aplicación web deliberadamente insegura
Introducción
WebGoat es una aplicación web deliberadamente insegura mantenida por OWASP diseñada para enseñar lecciones de seguridad en aplicaciones web.
Este programa es una demostración de fallos comunes en aplicaciones del lado del servidor. Los ejercicios están pensados para que las personas aprendan sobre seguridad de aplicaciones y técnicas de pruebas de penetración.
ADVERTENCIA 1: Mientras ejecutas este programa, tu máquina será extremadamente vulnerable a ataques. Deberías desconectarte de Internet mientras usas este programa. La configuración predeterminada de WebGoat se enlaza a localhost para minimizar la exposición.
ADVERTENCIA 2: Este programa es solo para fines educativos. Si intentas estas técnicas sin autorización, es muy probable que te atrapen. Si te descubren realizando hackeos no autorizados, la mayoría de las empresas te despedirán. Alegar que estabas haciendo investigación de seguridad no funcionará, ya que eso es lo primero que alegan todos los hackers.

Instrucciones de instalación:
Para más detalles consulta la guía de contribución
1. Ejecutar usando Docker
Si ya tienes un navegador y ZAP y/o Burp instalados en tu máquina, en este caso puedes ejecutar la imagen de WebGoat directamente usando Docker.
Cada versión también se publica en DockerHub.
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat
Para algunas lecciones necesitas que el contenedor se ejecute en la misma zona horaria. Para esto puedes establecer la variable de entorno TZ. Por ejemplo:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=America/Boise webgoat/webgoat
Si quieres usar OWASP ZAP u otro proxy, ya no podrás usar 127.0.0.1 o localhost, pero puedes usar entradas de host personalizadas. Por ejemplo:
127.0.0.1 www.webgoat.local www.webwolf.local
Luego puedes ejecutar el contenedor con:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e WEBGOAT_HOST=www.webgoat.local -e WEBWOLF_HOST=www.webwolf.local -e TZ=America/Boise webgoat/webgoat
Luego visita http://www.webgoat.local:8080/WebGoat/ y http://www.webwolf.local:9090/WebWolf/
2. Ejecutar usando Docker con un escritorio Linux completo
En lugar de instalar herramientas localmente, tenemos una imagen Docker completa basada en ejecutar un escritorio en tu navegador. De esta forma solo tienes que ejecutar una imagen Docker que te dará la mejor experiencia de usuario.
docker run -p 127.0.0.1:3000:3000 webgoat/webgoat-desktop
3. Autónomo
Descarga la última versión de WebGoat desde https://github.com/WebGoat/WebGoat/releases
export TZ=Europe/Amsterdam # or your timezone
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar
Haz clic en el enlace del registro para iniciar WebGoat.
3.1 Ejecutar en un puerto diferente
Si por alguna razón quieres ejecutar WebGoat en un puerto diferente, puedes hacerlo añadiendo el siguiente parámetro:
java -jar webgoat-2023.8.jar --webgoat.port=8001 --webwolf.port=8002
En el JAR combinado, --server.port es un alias de --webgoat.port. Usa --webwolf.port para establecer el puerto de WebWolf por separado.
Para ver las opciones disponibles, consulta las propiedades de WebGoat y las propiedades de WebWolf.
4. Ejecutar desde las fuentes
Requisitos previos:
- Java 25
- Tu IDE favorito
- Git, o soporte de Git en tu IDE
Abre una shell/ventana de comandos:
git clone [email protected]:WebGoat/WebGoat.git
Ahora empecemos compilando el proyecto.
cd WebGoat
git checkout <<branch_name>>
# On Linux/Mac:
./mvnw clean install
# On Windows:
./mvnw.cmd clean install
If you have ran WebGoat before, you should first run mvn clean -Pcleanall to clean up files from your temp and home directories which could fail the tests due to changes in lessons!
# Using docker or podman, you can than build the container locally
docker build -f Dockerfile . -t webgoat/webgoat
Ahora estamos listos para ejecutar el proyecto. WebGoat usa Spring Boot.
# On Linux/Mac:
./mvnw spring-boot:run
# On Windows:
./mvnw.cmd spring-boot:run
... deberías tener WebGoat ejecutándose en http://localhost:8080/WebGoat en un momento.
Nota: El enlace anterior te redirigirá a la página de inicio de sesión si no has iniciado sesión. Inicia sesión/Crea una cuenta para continuar.
Para cambiar la dirección IP añade la siguiente variable al archivo WebGoat/webgoat-container/src/main/resources/application.properties:
server.address=x.x.x.x
4. Ejecutar con un menú personalizado
Solo para especialistas. Hay una forma de configurar WebGoat con un menú personalizado. Puedes omitir algunas categorías de menú o lecciones individuales estableciendo ciertas variables de entorno.
Por ejemplo, ejecutándolo como jar en Linux/macOS se vería así:
export TZ=Europe/Amsterdam # or your timezone
export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
java -jar target/webgoat-2023.8-SNAPSHOT.jar
O en una ejecución de docker se vería así (una vez que esta versión se publique en docker hub):
docker run -d -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/webgoat