Tabla de Contenidos
OWASP Top 10
Notas del curso Hacking ético: descubriendo vulnerabilidades en aplicaciones web
OWASP
OWASP son las siglas de Open Web ApplicationSecurity Project.
Organización sin ánimo de lucro creada con el objetivo de fomentar la seguridad del software.
Inicialmente centrada en la seguridad en aplicaciones web, pero a día de hoy también abarca:
- Móviles
- APIs
- Web Services…
Ofrece Herramientas y recursos.
Proyectos
Destacar dos proyectos:
- OWASP Top 10: Las diez vulnerabilidades más comunes en aplicaciones web (https://owasp.org/www-project-top-ten/)
- OWASP Web Security TestingGuide: Guía de comprobaciones y controles de seguridad, organizados por categorías que se deben realizar en revisiones de seguridad de aplicaciones web (https://owasp.org/www-project-web-security-testing-guide/)
OWASP Web Security TestingGuide
- Separado en 12 categorías
- Recolección de información
- Gestión de Configuración e Implementación
- Gestión de Identidades
- Autenticación
- Autorización
- Gestión de sesiones
- Validación de entrada de datos
- Manejo de errores
- Cifrado débil
- Lógica de negocio
- Pruebas en el lado del cliente
- Testing de APIs
- Un total de 97 controles explicados
OWASP Top 10
A1: Inyección
En qué consiste
Presente en las entradas de datos del usuario.
Ejemplos: SQLi, LDAP, Xpath, Command Injection, XML, etc.
Se inyecta una cadena de strings que es interpretada por la aplicación, de forma que el atacante se aprovecha de ello
Cómo detectarla
Comprobar que las entradas de datos son validadas tanto en el lado cliente como en el servidor.
Fuerza bruta de inyecciones buscando un comportamiento anómalo en la aplicación.
Medidas de prevención
Validaciones de entrada en los datos en el servidor a través de listas blancas (sólo acepto los datos si coinciden con lo que se está esperando).
Utilizar APIs seguras para evitar el uso de intérpretes completos y proporcione una interfaz parametrizada.
A2: Pérdida de Autenticación
En qué consiste
Acceso no autorizado a la parte privada de las aplicaciones (formularios de login)
A través de ataques de fuerza bruta o diccionarios
Uso de usuarios y contraseñas por defecto
Cómo detectarla
Comprobar si se pueden automatizar ataques (fuerza bruta, captchas)
Política de contraseñas inseguras
Almacena las contraseñas en texto claro o cifradas con algoritmos débiles
Dispone de autenticación multi-factor
IDs de sesión expuestos o que no se invalidan de forma correcta tras el cierre de sesión
Medidas de prevención
Implementar autenticación multi-factor
Política de contraseñas robusta (no se permiten contraseñas por defecto o sencillas)
Mensajes de información genéricos (“El usuario o la contraseña son incorrectos”, “si el usuario facilitado existe se ha enviado un correo de recuperación a la dirección facilitada”)
IDs de sesión aleatorios, que sean almacenados de forma segura y deshabilitados tras un tiempo de inactividad
A3:Exposición de Datos Sensibles
En qué consiste
Datos sensibles no cifrados (texto plano), ya sea en el transporte o en el almacenamiento, que son accesibles a través de ataques como el “man-in-the-middle”, o acceso al servidor
Datos sensibles: Datos personales, datos bancarios, datos de salud, credenciales…
Cómo detectarla
Identificar si la aplicación trata datos sensibles y cuáles son
¿Se protegen cuando se encuentran en tránsito y cuando se almacenan? Comprobar que no se transmiten ni se almacenan en texto claro
Identificar algoritmos criptográficos utilizados ¿se consideran débiles?
Medidas de prevención
Clasificar los datos que trata la aplicación
No almacenar datos de forma innecesaria
Si se tratan datos sensibles cifrarlos tanto en tránsito como en almacenamiento
Utilizar algoritmos de cifrado robustos
Deshabilitar almacenamiento de datos sensibles en la caché y en el navegador
A4: Entidades Externas XML (XXE)
En qué consiste
Aprovecharse de los procesadores XML que usan las aplicaciones web para cargar o incluir contenido malicioso que sea procesado por la aplicación
Cómo detectarla
Comprobar si la aplicación acepta XML de fuentes de terceros (no confiables) y ejecuta el contenido de los mismos
Si la aplicación usa SOAP en una versión previa a la 1.2 posiblemente sea vulnerable
Si la aplicación es vulnerable a XXE, puede ser vulnerable también a ataques de denegación de servicio (Billion Laughs)
Medidas de prevención
Si es posible, usar formatos de datos más sencillos como JSON
Mantener actualizados tanto los procesadores XML como las bibliotecas XML
SOAP en versión 1.2 o posterior
Validación de entrada de datos basada en lista blanca en el servidor
A5: Pérdida de Control de Acceso
En qué consiste
Fallos en la autorización de la aplicación, un usuario puede acceder a acciones para las que no tiene permisos
Pueden derivar en la pérdida de confidencialidad integridad y disponibilidad de la aplicación
Cómo detectarla
Modificando la URL, para tratar de acceder a funcionalidades o vistas de otro usuario (modificando la ruta, el id del usuario, etc.)
Elevación de privilegios, tratar de ejecutar acciones sin estar autenticado, o acciones de un rol superior (administrador)
Manipulación de JWT o cookies
Medidas de prevención
Estos controles se deben aplicar en el lado del servidor para que el atacante no pueda modificarlos
Política de denegar acceso por defecto, excepto si estás autorizado
Deshabilitar listado de directorios
Registro de errores de control de acceso
A6: Configuración de Seguridad Incorrecta
En qué consiste
Vulnerabilidades presentes en la aplicación por:
- Vulnerabilidades conocidas que afectan a componentes
- Usuarios por defecto
- Directorios sin proteger
- Etc.
Cómo detectarla
Detección de servicios, componentes y versiones, comprobar si tienen vulnerabilidades conocidas
Probar cuentas y usuarios por defecto
Permisos mal configurados
Medidas de prevención
Inventario de componentes y versiones, y mantenerlo actualizado
Revisar y actualizar configuraciones
Evitar el uso de funcionalidades y componentes innecesarios que puedan suponer un riesgo
A7: Cross-Site Scripting (XSS)
En qué consiste
Inyecciones JavaScript que se ejecutan en el navegador de la víctima que pueden desembocar en ataques en el lado cliente como:
- Robo de sesión o apropiación de la cuenta
- Descarga de software malicioso en el equipo de la víctima
- Kryloggers
- Etc.
Cómo detectarla
Probando inyecciones de XSS en las entradas de datos del usuario y analizando el comportamiento de la aplicación
Medidas de prevención
Validación en las entradas de datos usando listas blancas (qué es lo que estoy esperado)
Usar frameworks seguros
Habilitar una política de seguridad de contenido (CSP) para mitigar XSS
A8: Deserialización Insegura
En qué consiste
El atacante envía objetos manipulados a la aplicación para su deserialización
Pueden ser relacionados con la estructura de datos y objetos, modificando la lógica de negocio o consiguiendo ejecución remota de código
O manipulación de datos, modificando el contenido de datos existentes, relacionado con el control de acceso
Cómo detectarla
Modificando y manipulando los objetos que se envían a la aplicación y observando el comportamiento de la misma ¿los procesa? ¿los ignora?
Medidas de prevención
No aceptar objetos serializados de fuentes no confiables
Verificación de integridad
Verificación del tipo de los datos que se van a deserializar
Registrar excepciones y fallos en la deserialización
A9: Componentes con Vulnerabilidades Conocidas
En qué consiste
Vulnerabilidades públicas que afectan a componentes de la aplicación (servidores, frameworks, etc.)
Cómo detectarla
Buscando en bases de datos de vulnerabilidades públicas si existen vulnerabilidades que afecten a los componentes de la aplicación
Comprobar si existen exploits públicos
Medidas de prevención
Inventario actualizado de componentes y versiones, actualizar o parchear si aparecen vulnerabilidades que los afecten
Revisar librerías, no solo componentes principales.
A10: Registro y Monitoreo Insuficientes
En qué consiste
La aplicación no cuenta con herramientas de registro de logs y monitoreo suficientes (o no están bien configuradas) que le permitan identificar incidentes de seguridad en fases tempranas
Cómo detectarla
Realizando ejercicios ofensivos y buscando evidencias en los logs que podrían haber levantado alertas
Identificar los eventos auditables (sensibles), como inicios de sesión, fallos en el login, o transacciones sensibles y asegurarse de que se registran correctamente
Errores en registro poco claros
Medidas de prevención
Asegurarse de tener los registros mínimos configurados con alertas configuradas que puedan alertar de actividades sospechosas Trazas de auditoría en todas las transacciones de alto valor que tenga la aplicación
