Tema 12
Las aplicaciones web concentran procesos de negocio, identidades, datos y exposición a Internet. Esta unidad estudia algunas de las fallas más representativas de ese entorno y por qué siguen apareciendo en sistemas reales.
Las aplicaciones web son uno de los objetivos más atractivos para un atacante porque suelen estar expuestas a Internet, procesan datos valiosos y conectan múltiples componentes: usuarios, bases de datos, APIs, sistemas internos y terceros. Una falla en esta capa puede traducirse rápidamente en robo de información, toma de cuentas, fraude o compromiso más amplio del entorno.
Muchas vulnerabilidades web nacen de un problema recurrente: la aplicación recibe datos del usuario, toma decisiones basadas en esos datos y no valida o protege correctamente el flujo completo. Otras veces la falla aparece en la gestión de autenticación, sesiones o permisos.
La inyección ocurre cuando la aplicación incorpora datos controlados por un usuario dentro de una instrucción, consulta o comando, sin separación o validación adecuada. El atacante consigue que su entrada sea interpretada como parte de la lógica interna, en lugar de ser tratada como dato puro.
El problema de fondo es la mezcla insegura entre datos de entrada y comandos ejecutables o interpretables por otro componente.
La inyección SQL es una de las variantes más conocidas. Aparece cuando una aplicación construye consultas a bases de datos usando entradas del usuario de manera insegura. Si esas entradas alteran la estructura de la consulta, el atacante puede leer, modificar o borrar datos, o incluso interferir con autenticación y lógica de aplicación.
Su impacto depende del contexto y de los privilegios con los que la aplicación accede a la base de datos, pero puede ser extremadamente severo.
Aunque SQL es la más conocida, la misma lógica se repite en otros contextos:
La idea es siempre la misma: una entrada controlada por el atacante pasa a influir indebidamente sobre una instrucción que el sistema interpreta.
Para que exista esta vulnerabilidad suelen combinarse varias condiciones:
Esto muestra que no se trata solo de un problema de sintaxis, sino de diseño y control de confianza entre capas.
Cross-Site Scripting o XSS ocurre cuando una aplicación web permite que contenido controlado por un atacante se ejecute como script en el navegador de otra víctima. En lugar de atacar directamente al servidor, el atacante aprovecha la confianza que el navegador deposita en el sitio legítimo.
Esto puede permitir robo de sesiones, manipulación de interfaz, redirecciones, captura de datos y acciones en nombre del usuario.
La aplicación recibe un contenido que debería tratar como dato, pero termina devolviéndolo al navegador en un contexto ejecutable o peligroso. Si el navegador interpreta ese contenido como script, el atacante obtiene una capacidad de ejecución dentro de la sesión de la víctima.
El problema surge de no controlar adecuadamente cómo se muestra, escapa o inserta el contenido en HTML, atributos, scripts o componentes dinámicos.
| Tipo | Descripción | Ejemplo conceptual |
|---|---|---|
| Reflejado | El payload vuelve inmediatamente en la respuesta | Parámetro malicioso en una búsqueda o error |
| Almacenado | El payload queda guardado y afecta a múltiples víctimas | Comentario o perfil visible para otros usuarios |
| Basado en DOM | La vulnerabilidad ocurre en manipulación del lado del navegador | Script cliente que inserta datos inseguros en la página |
El verdadero alcance depende de qué puede hacer el script en el contexto del navegador y de qué controles adicionales existan.
Cross-Site Request Forgery o CSRF consiste en inducir al navegador de una víctima autenticada a enviar una solicitud no deseada a una aplicación en la que ya tiene una sesión válida. El servidor interpreta esa acción como legítima porque proviene del navegador autenticado.
La clave de este ataque es que el atacante no necesita robar la sesión: aprovecha la sesión ya existente para disparar acciones en nombre de la víctima.
Ejemplos típicos incluyen cambios de correo, modificación de datos, ejecución de transferencias o acciones administrativas.
Aunque a veces se confunden, son vulnerabilidades distintas:
Las fallas de autenticación aparecen cuando el proceso de verificar la identidad del usuario es débil, inconsistente o fácilmente abusado. En aplicaciones web esto puede derivar en toma de cuentas, bypass de login o acceso indebido a funcionalidades sensibles.
Estas fallas no se limitan al formulario de ingreso. También incluyen recuperación de contraseña, manejo de sesiones, recordatorios persistentes, MFA, cierre de sesión y rotación de credenciales.
La sesión es lo que sostiene la identidad después del login. Si se gestiona mal, el atacante puede reaprovecharla o secuestrarla. Algunos problemas frecuentes son:
Estas debilidades se conectan directamente con lo visto en el tema anterior sobre robo de sesiones.
Aunque el título de este tema pone foco en autenticación, es importante distinguirla de autorización. Autenticación responde “quién sos”; autorización responde “qué podés hacer”. Una aplicación puede autenticar bien y, aun así, permitir acceso a funciones o datos que no corresponden.
Cuando la autorización es débil, un usuario autenticado puede acceder a recursos de otros usuarios o ejecutar acciones no permitidas simplemente cambiando parámetros, rutas o identificadores.
Muchas vulnerabilidades web surgen porque la aplicación confía demasiado en lo que sucede del lado del cliente: formularios, scripts, valores ocultos o restricciones visuales. Sin embargo, cualquier dato enviado desde el cliente debe considerarse potencialmente manipulable.
| Vulnerabilidad | Impacto posible |
|---|---|
| Inyección | Lectura, modificación o destrucción de datos; bypass de lógica |
| XSS | Robo de sesión, captura de datos, manipulación de interfaz |
| CSRF | Acciones no deseadas ejecutadas con la sesión de la víctima |
| Fallas de autenticación | Toma de cuentas, acceso indebido y persistencia no autorizada |
| Autorización insuficiente | Acceso a recursos o funciones fuera de permiso |
Para XSS, el foco está en cómo se procesa y representa el contenido. Para CSRF, el foco está en validar la legitimidad de la solicitud.
Las vulnerabilidades web muestran cómo pequeños errores de validación, representación o control de acceso pueden producir impactos severos cuando una aplicación está expuesta y maneja datos críticos. Entender estos patrones permite analizar mejor riesgos reales y diseñar aplicaciones con menos puntos de ruptura.
En el próximo tema se estudiarán las vulnerabilidades en software, bibliotecas y cadena de suministro, ampliando el foco desde la aplicación visible hacia sus dependencias y componentes.