Saltar a contenido

Hoja de Trucos de WebGoat

```bash

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