Tema 14

14. Vulnerabilidades web: OWASP Top 10 y metodología de pruebas

Las aplicaciones web concentran autenticación, datos, lógica de negocio e integraciones. Probarlas bien exige una metodología que combine OWASP, análisis manual, uso controlado de herramientas y comprensión del flujo real de usuarios.

Objetivo Comprender cómo evaluar aplicaciones web
Enfoque OWASP, metodología y validación manual
Resultado Preparar pruebas web profundas y ordenadas

14.1 Introducción

Las aplicaciones web son uno de los objetivos más frecuentes en pruebas de penetración. Manejan sesiones, credenciales, perfiles, pagos, archivos, datos personales, APIs, permisos y procesos de negocio. Una falla web puede ir desde una cabecera ausente hasta acceso no autorizado a información crítica.

OWASP aporta referencias muy útiles, especialmente OWASP Top 10, Web Security Testing Guide y ASVS. Sin embargo, una prueba web profesional no debe limitarse a marcar casillas. Debe entender cómo funciona la aplicación y qué impacto tendría abusar de sus flujos.

Este tema presenta una metodología de pruebas web y una vista práctica del OWASP Top 10, preparando el terreno para los temas posteriores sobre inyecciones, XSS, CSRF, SSRF, autenticación y control de acceso.

14.2 Qué hace especial a una aplicación web

Una aplicación web combina muchas capas: navegador, frontend, backend, base de datos, sesiones, permisos, infraestructura, APIs y servicios externos. Una vulnerabilidad puede aparecer en cualquiera de esas capas o en la forma en que interactúan.

  • Recibe entradas de usuarios y sistemas externos.
  • Expone funciones a través de rutas, formularios y APIs.
  • Gestiona identidad, sesión y autorización.
  • Procesa datos sensibles.
  • Puede depender de terceros, colas, almacenamiento y servicios cloud.
  • Se actualiza con frecuencia y cambia su superficie de ataque.
En seguridad web, muchas fallas críticas no son técnicas aisladas sino errores en la lógica de negocio o en la autorización.

14.3 OWASP Top 10 como mapa de riesgos

OWASP Top 10 resume categorías de riesgos frecuentes y relevantes en aplicaciones web. Es una referencia para comunicar problemas, orientar pruebas y priorizar controles, pero no cubre todo lo que puede fallar.

Categoría Idea central Ejemplo de impacto
Broken Access Control Usuarios acceden a funciones o datos indebidos Ver o modificar recursos de otros usuarios
Cryptographic Failures Protección insuficiente de datos sensibles Exposición de datos en tránsito o reposo
Injection Entradas no confiables alteran consultas o comandos Lectura, modificación o ejecución no autorizada
Insecure Design El diseño no contempla amenazas importantes Abuso de flujo aunque el código no tenga bugs obvios
Security Misconfiguration Configuración débil o exposición innecesaria Paneles, errores o archivos sensibles accesibles

14.4 Límites del OWASP Top 10

El Top 10 no es una metodología completa. Es una lista de categorías de riesgo. Una aplicación puede cumplir controles relacionados con el Top 10 y aun así tener fallas importantes de negocio, integración, autorización o proceso.

  • No reemplaza OWASP WSTG ni ASVS.
  • No cubre todos los errores específicos de una arquitectura.
  • No sustituye pruebas con roles reales de la aplicación.
  • No detecta automáticamente abusos de lógica de negocio.
  • No define por sí solo severidad contextual.

Debe usarse como mapa inicial, no como único criterio de cobertura.

14.5 Metodología de pruebas web

Una prueba web ordenada evita saltar directamente a payloads sin comprender la aplicación. El flujo recomendado parte del contexto y avanza hacia validaciones específicas.

  1. Definir alcance, roles, usuarios y entornos.
  2. Mapear la aplicación y sus flujos principales.
  3. Identificar tecnologías, rutas, endpoints y APIs.
  4. Analizar autenticación y gestión de sesiones.
  5. Probar autorización y control de acceso.
  6. Validar entradas y salidas.
  7. Revisar configuración, cabeceras y archivos expuestos.
  8. Evaluar lógica de negocio.
  9. Documentar evidencias y priorizar por impacto.

14.6 Preparación del entorno de prueba

Antes de probar una aplicación web, hay que preparar navegador, proxy, usuarios, datos de prueba y reglas de alcance.

  • Configurar un proxy como Burp Suite u OWASP ZAP.
  • Usar un navegador dedicado para la prueba.
  • Separar perfiles de usuario y sesiones.
  • Contar con usuarios de prueba para distintos roles.
  • Definir datos que pueden modificarse sin impacto.
  • Desactivar automatizaciones agresivas si no están autorizadas.
  • Registrar cookies, tokens y endpoints sensibles con protección.
En pruebas web autenticadas, tener usuarios de distintos roles es más valioso que ejecutar muchos payloads sin entender permisos.

14.7 Mapeo de la aplicación

Mapear la aplicación significa entender sus rutas, flujos, funciones y datos. Este mapa permite saber qué probar y qué impacto tendría cada acción.

Elemento Qué observar Riesgo posible
Rutas públicas Login, registro, recuperación, documentación Enumeración, abuso de flujos, exposición
Rutas autenticadas Paneles, perfiles, operaciones, archivos Control de acceso y datos sensibles
APIs Endpoints, métodos, objetos, tokens BOLA, autorización débil, abuso de endpoints
Archivos estáticos JS, mapas, rutas internas, bundles Fuga de endpoints o claves
Flujos de negocio Compra, aprobación, cambio de datos Abuso lógico o bypass de controles

14.8 Autenticación

La autenticación verifica identidad. En pruebas web se revisa cómo se inicia sesión, cómo se recupera acceso, cómo se aplica MFA y cómo responde el sistema ante errores.

  • Política de contraseñas.
  • Protección contra fuerza bruta y stuffing.
  • Mensajes de error que puedan enumerar usuarios.
  • Recuperación y restablecimiento de contraseña.
  • MFA y bypasses posibles.
  • Sesiones simultáneas y cierre de sesión.
  • Flujos de registro y activación.

Las pruebas de credenciales deben respetar estrictamente el alcance y evitar fuerza bruta no autorizada.

14.9 Gestión de sesiones

Una sesión mantiene la identidad del usuario entre peticiones. Si la sesión se maneja mal, un atacante podría robar, reutilizar, fijar o prolongar acceso.

  • Cookies con Secure, HttpOnly y SameSite.
  • Expiración por tiempo e inactividad.
  • Regeneración de sesión después de login.
  • Invalidación al cerrar sesión.
  • Protección de tokens en frontend.
  • Uso de JWT y validación de firma, expiración y claims.
  • Sesiones persistentes y dispositivos recordados.

14.10 Control de acceso

El control de acceso define qué puede hacer cada usuario. Es una de las áreas más críticas en pruebas web, porque muchas fallas no son visibles para escáneres automáticos.

Tipo Ejemplo Prueba segura
Vertical Usuario común accede a función admin Comparar roles con cuentas de prueba
Horizontal Usuario accede a recurso de otro usuario Usar dos cuentas de laboratorio
Por objeto ID manipulable en URL o JSON Cambiar identificador entre recursos de prueba
Por función Endpoint oculto pero accesible Invocar función con rol no autorizado

14.11 Validación de entradas

Las entradas no confiables pueden llegar desde formularios, URLs, cabeceras, cookies, JSON, XML, archivos, parámetros ocultos o APIs. Validarlas mal puede causar inyecciones, XSS, SSRF, traversal o errores de lógica.

  • Parámetros GET y POST.
  • Cuerpos JSON y XML.
  • Cabeceras HTTP.
  • Cookies y tokens manipulables.
  • Subidas de archivos.
  • Campos ocultos o calculados en cliente.
  • IDs de objetos y filtros de búsqueda.

La validación debe hacerse del lado servidor. El control en frontend mejora experiencia, pero no es una barrera de seguridad suficiente.

14.12 Inyecciones

Las inyecciones ocurren cuando una entrada no confiable altera una consulta, comando, expresión o estructura interpretada por otro sistema. Incluyen SQL, NoSQL, comandos, LDAP, XPath, plantillas y otros contextos.

Señales comunes:

  • Errores detallados de base de datos o backend.
  • Diferencias de respuesta ante entradas especiales.
  • Retrasos anómalos ante ciertos patrones.
  • Consultas que aceptan operadores inesperados.
  • Filtros que se alteran por caracteres de control.
La validación de inyecciones debe usar payloads controlados. Extraer datos reales rara vez es necesario para demostrar el riesgo.

14.13 XSS y ejecución en navegador

Cross-Site Scripting permite ejecutar JavaScript en el navegador de otros usuarios o en el propio contexto de la aplicación. Puede afectar sesiones, acciones de usuario, integridad de interfaz y exposición de datos.

  • Reflejado: el payload viaja en la petición y vuelve en la respuesta.
  • Almacenado: el payload queda persistido y afecta a otros usuarios.
  • DOM-based: la ejecución ocurre por manipulación del DOM en cliente.

Para validar, se deben usar payloads inocuos y cuentas de prueba. No debe capturarse cookies reales ni afectar usuarios productivos.

14.14 CSRF y acciones involuntarias

CSRF permite inducir a un usuario autenticado a ejecutar una acción sin intención. Aunque algunas arquitecturas modernas reducen el riesgo, sigue siendo relevante en aplicaciones con cookies y acciones sensibles.

Aspectos a revisar:

  • Tokens CSRF por acción o sesión.
  • Validación de origen y referer cuando aplique.
  • Uso correcto de SameSite en cookies.
  • Acciones sensibles protegidas con reautenticación o MFA.
  • Diferencia entre GET seguro y acciones con cambio de estado.

14.15 SSRF y llamadas del servidor

SSRF ocurre cuando la aplicación permite que el servidor realice solicitudes hacia destinos controlados por el usuario. Puede exponer servicios internos, metadatos cloud o endpoints no accesibles desde internet.

Validación segura:

  • Usar un endpoint controlado por el equipo evaluador.
  • Evitar apuntar a servicios internos sensibles sin autorización.
  • No consultar metadatos cloud si no está permitido.
  • Registrar evidencia de solicitud saliente.
  • Probar restricciones de esquema, host y red de forma gradual.

14.16 Subida de archivos

La carga de archivos puede introducir riesgos de ejecución, almacenamiento de contenido malicioso, bypass de validaciones, sobreescritura, exposición pública o consumo de recursos.

Control Qué revisar Riesgo
Tipo de archivo Validación de extensión, MIME y contenido Subida de archivos ejecutables o peligrosos
Nombre Normalización y rutas Path traversal o sobreescritura
Ubicación Directorio público o privado Acceso directo a archivos sensibles
Tamaño Límites y manejo de errores Consumo de almacenamiento o DoS
Procesamiento Antivirus, conversión, metadatos Vulnerabilidades en parsers o fuga de datos

14.17 Configuración de seguridad

Muchos hallazgos web provienen de configuración débil: cabeceras ausentes, errores detallados, entornos de debug, directorios listables, archivos de respaldo o credenciales en configuración.

  • Cabeceras de seguridad HTTP.
  • Mensajes de error y stack traces.
  • Modo debug habilitado.
  • Directorios listables.
  • Archivos .env, backups, logs o configuraciones.
  • Certificados TLS mal configurados.
  • Paneles administrativos expuestos.

14.18 Componentes vulnerables

Las aplicaciones dependen de frameworks, librerías, paquetes y servicios de terceros. Un componente vulnerable puede afectar a toda la aplicación si está expuesto o si procesa datos no confiables.

  • Identificar dependencias visibles en frontend y backend.
  • Revisar versiones conocidas cuando estén disponibles.
  • Verificar si el componente vulnerable está realmente en uso.
  • Confirmar si existen parches o mitigaciones.
  • No reportar solo por versión sin analizar contexto.

14.19 Lógica de negocio

La lógica de negocio define reglas propias de la aplicación: descuentos, límites, aprobaciones, cupos, roles, estados, orden de pasos y condiciones. Los escáneres rara vez entienden estas reglas.

Ejemplos de pruebas:

  • Saltarse pasos de un flujo.
  • Modificar precios, cantidades o límites desde el cliente.
  • Repetir acciones que deberían ser únicas.
  • Aprobar operaciones con rol incorrecto.
  • Usar estados inválidos de un proceso.
  • Abusar de cupones, invitaciones o referidos.
Las fallas de lógica de negocio suelen tener impacto alto porque afectan reglas centrales, aunque no parezcan vulnerabilidades técnicas clásicas.

14.20 APIs dentro de aplicaciones web

Muchas aplicaciones web modernas son interfaces sobre APIs. Probar solo la interfaz visual deja fuera endpoints, métodos, objetos y flujos que pueden ser abusados directamente.

  • Identificar endpoints desde tráfico del navegador.
  • Revisar métodos HTTP permitidos.
  • Probar autorización por objeto y por función.
  • Validar parámetros, filtros, paginación y ordenamientos.
  • Revisar tokens, scopes y expiración.
  • Observar diferencias entre frontend y backend.

14.21 Priorización de hallazgos web

La severidad depende de impacto real, exposición, datos afectados, privilegios requeridos y facilidad de explotación.

Hallazgo Impacto bajo Impacto alto
Cabecera faltante No habilita explotación directa Agrava una vulnerabilidad explotable
XSS Solo en perfil propio y con baja exposición Almacenado en panel administrativo
IDOR Accede a datos no sensibles de prueba Expone documentos o datos personales
Inyección Error controlado sin acceso a datos Lectura o modificación de datos críticos
Debug expuesto Solo información genérica Secretos, variables o ejecución de código

14.22 Evidencia en pruebas web

La evidencia web suele incluir peticiones, respuestas, capturas, roles y explicación del impacto. Debe cuidarse especialmente el manejo de tokens, cookies, datos personales y contenido sensible.

  • Guardar petición y respuesta relevantes.
  • Truncar cookies, tokens y secretos.
  • Indicar usuario o rol utilizado.
  • Usar recursos de prueba cuando sea posible.
  • No incluir datos personales completos si un fragmento basta.
  • Explicar el impacto con lenguaje claro.
  • Separar evidencia técnica de resumen ejecutivo.

14.23 Errores frecuentes

  • Limitarse a ejecutar un escáner web sin revisión manual.
  • Probar solo usuario administrador y olvidar roles comunes.
  • No mapear APIs usadas por el frontend.
  • Reportar cabeceras faltantes con severidad exagerada.
  • Ignorar lógica de negocio.
  • Usar payloads destructivos en producción.
  • No proteger cookies, tokens o datos sensibles en evidencias.
  • Confundir error técnico con vulnerabilidad explotable.

14.24 Flujo práctico de pruebas web

Un flujo útil para evaluar una aplicación web puede ser:

  1. Confirmar alcance, entorno y usuarios disponibles.
  2. Configurar proxy y navegador de pruebas.
  3. Mapear rutas, flujos, roles y endpoints.
  4. Revisar autenticación, sesiones y recuperación de cuenta.
  5. Probar control de acceso vertical y horizontal.
  6. Evaluar validación de entradas e inyecciones de forma controlada.
  7. Revisar XSS, CSRF, SSRF, subida de archivos y configuración.
  8. Analizar componentes, APIs y lógica de negocio.
  9. Recolectar evidencia mínima y protegida.
  10. Priorizar hallazgos por impacto real.

14.25 Qué debes recordar de este tema

  • OWASP Top 10 es una guía de riesgos, no una metodología completa.
  • Las pruebas web requieren mapear flujos, roles, endpoints y datos.
  • Control de acceso y lógica de negocio suelen requerir análisis manual.
  • Las APIs deben evaluarse aunque no sean visibles directamente en la interfaz.
  • La evidencia debe proteger cookies, tokens, secretos y datos personales.
  • La severidad depende del impacto real, no solo del nombre de la vulnerabilidad.

14.26 Conclusión

Las vulnerabilidades web requieren una combinación de método, herramientas y criterio. OWASP ayuda a ordenar la cobertura, pero el valor real aparece cuando se entiende cómo funciona la aplicación y qué impacto tendría abusar de sus controles.

En el próximo tema profundizaremos en inyección SQL, NoSQL, comandos y técnicas de validación segura, una de las familias de vulnerabilidades más relevantes en aplicaciones y servicios.