Hoja de Trucos de WebGoat¶
Pull WebGoat Docker image¶
docker pull webgoat/webgoat-8.0
Run WebGoat container¶
docker run -d -p 8080:8080 -p 9090:9090 --name webgoat webgoat/webgoat-8.0
Access WebGoat¶
Navigate to http://localhost:8080/WebGoat¶
WebWolf (support application): http://localhost:9090/WebWolf¶
Run with persistent data¶
docker run -d -p 8080:8080 -p 9090:9090 -v webgoat_data:/home/webgoat/.webgoat --name webgoat webgoat/webgoat-8.0
Stop container¶
docker stop webgoat
Remove container¶
docker rm webgoat
View logs¶
docker logs webgoat ```## Descripción General
WebGoat es una aplicación web deliberadamente insegura desarrollada por el Open Web Application Security Project (OWASP) para enseñar conceptos de seguridad de aplicaciones web de manera interactiva y atractiva. A diferencia de los materiales tradicionales de capacitación en seguridad, WebGoat proporciona un entorno de aprendizaje práctico donde los usuarios pueden practicar la identificación y explotación de vulnerabilidades de aplicaciones web en un entorno seguro y controlado. La aplicación está diseñada como una plataforma educativa integral que cubre las 10 principales vulnerabilidades de OWASP y muchos conceptos de seguridad adicionales a través de lecciones y desafíos interactivos.
La plataforma se distingue por su enfoque basado en lecciones, donde cada concepto de seguridad se presenta como un módulo de aprendizaje estructurado con objetivos claros, información de contexto y orientación paso a paso. WebGoat incluye explicaciones detalladas de la mecánica de vulnerabilidades, contexto del mundo real y estrategias de remediación, lo que lo hace valioso tanto para principiantes que aprenden fundamentos de seguridad como para profesionales experimentados que buscan comprender técnicas específicas de ataque. La aplicación realiza un seguimiento del progreso del usuario, proporciona pistas cuando es necesario y ofrece retroalimentación inmediata sobre las soluciones intentadas.
La arquitectura de WebGoat está construida sobre tecnologías web modernas, utilizando Spring Boot para el backend y marcos frontend contemporáneos para la interfaz de usuario. Esta base moderna garantiza que las vulnerabilidades y técnicas de ataque demostradas sean relevantes para las prácticas actuales de desarrollo de aplicaciones web. La plataforma incluye tanto lecciones guiadas con objetivos de aprendizaje específicos como desafíos de formato abierto que permiten a los usuarios explorar y experimentar con diferentes vectores de ataque.
El valor educativo de WebGoat se extiende más allá del aprendizaje individual a programas de instrucción en el aula y programas de capacitación corporativa. La plataforma admite múltiples cuentas de usuario, seguimiento de progreso y características administrativas que la hacen adecuada para entornos de capacitación estructurados. Muchos programas de educación en ciberseguridad, campamentos de entrenamiento e iniciativas de concientización sobre seguridad corporativa utilizan WebGoat como componente central de su plan de estudios de capacitación práctica. ```yaml
Create docker-compose.yml¶
cat << 'EOF' > docker-compose.yml version: '3.8'
services: webgoat: image: webgoat/webgoat-8.0 container_name: webgoat ports: - "8080:8080" - "9090:9090" volumes: - webgoat_data:/home/webgoat/.webgoat environment: - WEBGOAT_PORT=8080 - WEBWOLF_PORT=9090 restart: unless-stopped
volumes: webgoat_data: EOF
Start WebGoat¶
docker-compose up -d
View logs¶
docker-compose logs -f webgoat
Stop WebGoat¶
docker-compose down
Stop and remove volumes¶
docker-compose down -v ```## Instalación
Instalación con Docker (Recomendado)¶
```bash
Download WebGoat JAR¶
wget https://github.com/WebGoat/WebGoat/releases/download/v8.2.2/webgoat-server-8.2.2.jar
Install Java (if not already installed)¶
Ubuntu/Debian¶
sudo apt update sudo apt install openjdk-11-jdk -y
CentOS/RHEL¶
sudo yum install java-11-openjdk -y
macOS¶
brew install openjdk@11
Run WebGoat¶
java -jar webgoat-server-8.2.2.jar
Run with custom port¶
java -jar webgoat-server-8.2.2.jar --server.port=9001
Run with custom configuration¶
java -jar webgoat-server-8.2.2.jar --server.address=0.0.0.0 --server.port=8080
Access WebGoat at http://localhost:8080/WebGoat¶
### Instalación con Docker Composebash
Install prerequisites¶
Java 11+, Maven 3.6+, Git¶
Clone repository¶
git clone https://github.com/WebGoat/WebGoat.git cd WebGoat
Build WebGoat¶
mvn clean install
Run WebGoat¶
mvn spring-boot:run
Build standalone JAR¶
mvn clean package java -jar webgoat-server/target/webgoat-server-*.jar
Run WebWolf separately¶
cd webwolf
mvn spring-boot:run
### Instalación de JAR independienteyaml
Create webgoat-deployment.yaml¶
cat << 'EOF' > webgoat-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: webgoat labels: app: webgoat spec: replicas: 1 selector: matchLabels: app: webgoat template: metadata: labels: app: webgoat spec: containers: - name: webgoat image: webgoat/webgoat-8.0 ports: - containerPort: 8080 - containerPort: 9090 env: - name: WEBGOAT_PORT value: "8080" - name: WEBWOLF_PORT value: "9090"
apiVersion: v1 kind: Service metadata: name: webgoat-service spec: selector: app: webgoat ports: - name: webgoat port: 8080 targetPort: 8080 - name: webwolf port: 9090 targetPort: 9090 type: LoadBalancer EOF
Deploy to Kubernetes¶
kubectl apply -f webgoat-deployment.yaml
Check deployment status¶
kubectl get pods kubectl get services
Access WebGoat¶
kubectl port-forward service/webgoat-service 8080:8080
### Instalación desde Código Fuentebash
Access WebGoat¶
Navigate to http://localhost:8080/WebGoat¶
Create user account¶
Click "Register new user"¶
Username: your_username¶
Password: your_password¶
Login to WebGoat¶
Use created credentials¶
Access WebWolf (support application)¶
Navigate to http://localhost:9090/WebWolf¶
Use same credentials as WebGoat¶
### Despliegue en Kubernetesbash
Default admin account (if enabled)¶
Username: admin¶
Password: admin¶
Create additional users¶
Each user has separate progress tracking¶
Suitable for classroom environments¶
Reset user progress¶
Delete user data directory¶
Or use admin interface (if available)¶
Backup user progress¶
Copy .webgoat directory¶
Contains user data and progress¶
```## Configuración Inicial
Configuración por Primera Vez¶
```bash
Custom server configuration¶
Create application.properties¶
cat << 'EOF' > application.properties server.port=8080 server.address=0.0.0.0 logging.level.org.owasp.webgoat=DEBUG webgoat.user.directory=/custom/path EOF
Run with custom configuration¶
java -jar webgoat-server-*.jar --spring.config.location=application.properties
Environment variables¶
export WEBGOAT_PORT=8080 export WEBWOLF_PORT=9090 export WEBGOAT_SSLENABLED=false
JVM options¶
java -Xmx1024m -Xms512m -jar webgoat-server-*.jar
### Gestión de Usuariosbash
HTTP Basics¶
- Understanding HTTP protocol¶
- Request/response structure¶
- Headers and methods¶
- Status codes¶
HTTP Proxies¶
- Proxy configuration¶
- Intercepting requests¶
- Modifying traffic¶
- Burp Suite integration¶
Developer Tools¶
- Browser developer tools¶
- Network tab analysis¶
- Console manipulation¶
- Source code inspection¶
### Opciones de Configuraciónbash
Authentication Bypasses¶
Lesson: Bypass authentication mechanisms¶
Method 1: SQL Injection in login¶
Username: admin' -- Password: anything
Method 2: Logic flaws¶
Analyze authentication logic¶
Find bypass conditions¶
Method 3: Session manipulation¶
Modify session tokens¶
Predict session values¶
Password Reset Flaws¶
Lesson: Exploit password reset functionality¶
Method 1: Parameter manipulation¶
Change user parameter in reset request¶
Reset other users' passwords¶
Method 2: Token prediction¶
Analyze reset token generation¶
Predict valid tokens¶
Secure Passwords¶
Lesson: Password security concepts¶
- Password complexity¶
- Common passwords¶
- Brute force attacks¶
- Password storage¶
```## Categorías y Módulos de Lecciones
Conciencia General de Seguridad¶
```bash
Insecure Direct Object References¶
Lesson: Access unauthorized resources¶
Method 1: Parameter manipulation¶
Change user ID in requests¶
Access other users' data¶
Method 2: Path traversal¶
Modify file paths¶
Access system files¶
Missing Function Level Access Control¶
Lesson: Access restricted functions¶
Method 1: URL manipulation¶
Access admin functions directly¶
Bypass menu restrictions¶
Method 2: Role manipulation¶
Modify role parameters¶
Escalate privileges¶
### Fallas de Autenticaciónbash
Reflected XSS¶
Lesson: Execute JavaScript in victim's browser¶
Basic payload¶
Advanced payloads¶