Aplicaciones Web
Son aplicaciones que corren sobre servidores web y son accesibles a través de internet, están diseñadas para proveer de funcionalidades interactivas y dinámicas, sus tipos y características son:
Plataformas sociales
Servicios de email
E-comerce
Herramientas cloud
Funcionan con una arquitectura cliente-servidor
Su interfaz de usuario combina HTML y CSS
Los usuarios interactúan con ellas enviando peticiones y recibiendo respuestas
Web App Security
Se enfoca en proteger las aplicaciones web de amenazas de seguridad y ataques.
El primer objetivo es garantizar la confidencialidad, integridad y disponibilidad de la data procesada mientras se mitiga el riesgo de accesos no autorizados, fuga de datos e interrupciones de servicio.
Porque proteger las web apps:
Datos sensibles
Confianza de usuarios
Perdida monetaria
Cumplir regulaciones
Mitigar cyber amenazas
Protección ante ataques DOS
Mantener continuidad de negocio
Defacement y manipulación de datos
Mejores practicas:
Autorización y autenticación
Validación de entradas
Implementar ssl
Programación segura
Actualizaciones regulares
Principio de menor privilegio
Web app firewall
Manejo de sesiones
Web App Security Testing
Es el proceso de evaluar el aspecto de seguridad de una aplicación web para identificar vulnerabilidades, debilidades y riesgos.
Involucra realizar pruebas para asegurarnos que la aplicación web es resistente a amenazas de seguridad donde el objetivo primario es descubrir fallos antes que sean explotados por los atacantes.
Identificando y resolviendo vulnerabilidades la organización puede incrementar su postura de seguridad, de su aplicación web, proteger a sus usuarios e información sensible.
Típicamente involucra una combinación de herramientas manuales y automáticas:
Escaners de vulnerabilidades
Pentesting
Code review, static analisys
Input/output testing
Manejo de sesiones/token
Api testing
Web Pentesting está integrado dentro de una prueba de seguridad web, esta simula un adversario y explota las vulnerabilidades encontradas de manera controlada, un estudio de vulnerabilidades no necesariamente incluirá la fase de pentesting
Aspecto | Web App Security testing | Web App Pentesting |
Objetivo | Identificar vulnerabilidades y debilidades sin explotarlas activamente | Intentar activamente explotar las vulnerabilidades identificadas |
Metodología | Varios tipos de pruebas | Usar herramientas y técnicas que simulan ataques reales |
Enfoque | Enfoque amplio que incluye pruebas automáticas y manuales | Específicas para para identificar vulnerabilidades, enfoque manual |
Impacto | No intrusivo, se enfoca en identificar problemas | Puede ser intrusivo causando interrupciones durante la prueba |
Reporte | Identificar vulnerabilidades y proveer recomendaciones | Documentar exploits exitosos, identificar debilidades y recomendar remediaciones |
Objetivos | Aumentar la postura de seguridad de la aplicación web | Validar la efectividad de los controles de seguridad existentes y capacidad de respuesta de incidentes |
Amenazas y Riesgos
Amenazas
Cualquier fuente de potencial daño que pueda explotar una vulnerabilidad
Puede ser creado por el hombre o la naturaleza
Riesgo
Es la potencial perdida o daño producido por una amenaza explotando una vulnerabilidad
Es la probabilidad de ocurrir una amenaza por el impacto o severidad
Riesgo = amenaza * severidad
Riesgos comunes en aplicaciones web
Xss
Sqli
Csrf
Security misconfig
Sensitive data exposure
Brute force
DOS
Ssrf
File upload vulnerabilities
Broken access control
Ciclo de vida de un Pentesting
Una prueba de penetración web simula ataques del mundo real contra un sitio web para encontrar vulnerabilidades y proveer recomendaciones para su remediación
Una metodología provee de una aproximación sistemática para realizar la prueba, proveen consistencia a través de las diferentes pruebas ya que estandarizan las herramientas, los procedimientos y técnicas para que todas las áreas sean probadas.
Adicionalmente una metodología provee una guía para cubrir todos los componentes de la aplicación web reduciendo el riesgo de saltarse fallas críticas de seguridad, también provee un flujo para optimizar el tiempo que se necesita para realizar las pruebas enfocándose en áreas de alto riesgo y evitando gastar tiempo en actividades redundantes
Muchas metodologías están basadas en estándares de la industria y mejores prácticas como OWASP y NIST, siguiendo estos lineamientos asegura un desarrollo completo de las pruebas, también se puede destacar que siguiendo alguna metodología nos aseguramos de cumplir con las leyes vigentes y de manera ética tener y cumplir con la debida autorización y alcance
Fase | Objetivos | |
1 | Pre-engagement | Se define el alcance de la prueba, url del objetivo, funcionalidades a ser probadas. |
Obtener autorización y permisos para realizar la prueba.
Obtener información relevante sobre la aplicación como tecnologías usadas, roles y funcionalidades criticas para el negocio. |
| 2 | Reconocimiento | Obtener información pública disponible sobre el objetivo y su infraestructura de manera pasiva.
Enumerar subdominios, directorios y archivos para descubrir contenido sensible o escondido.
Usar herramientas como Nmap para identificar puertos abiertos.
Usar Google Dorks para encontrar información indexada como archivos y directorios. |
| 3 | Modelado de Amenazas | Analizar la arquitectura de la aplicación y su flujo de información para identificar amenazas potenciales y vectores de ataque.
Construir un modelo de amenazas para entender como los atacantes pueden interactuar con la aplicación.
Identificar áreas de alto riesgo y priorizar los esfuerzos en ellos. |
| 4 | Escaneo de vulnerabilidad | Usar herramientas automatizadas como Burp Suite o OWASP ZAP.
Verificar y validar los resultados manualmente para eliminar falsos positivos y negativos. |
| 5 | Pruebas manuales | Realizar pruebas manuales para identificar vulnerabilidades en la aplicación.
Probar las entradas de datos para verificar problemas como esquivar autorizaciones o problemas de lógica de negocio.
Intentar explotar fallos de seguridad y demostrar el impacto potencial y el riesgo de la aplicación. |
| 6 | Autorización y autenticación | Probar los mecanismos de autorización y autenticación para encontrar debilidades en la política de contraseñas, manejo de sesiones y procedimientos de cierre de cuentas.
Evaluar el control de acceso para asegurarse que un usuario no autorizado puede acceder a datos sensibles. |
| 7 | Manejo de sesiones | Evaluar la capacidad de manejo de sesiones de la aplicación para prevenir robos y otros ataques relacionados.
Chequear timeouts y manejo de tokens. |
| 8 | Manejo de información | Revisar como la aplicación maneja información sensible como claves, datos de usuario y archivos confidenciales.
Chequear mensajes de error, respuestas de servicios controles de acceso. |
| 9 | Pruebas de lógica de negocio | Evaluar la lógica de negocio para identificar fallos.
Probar escalado de privilegios. |
| 10 | Pruebas de lado del cliente | Evaluar código de lado del cliente para encontrar fallas como almacenamiento inseguro y datos sensibles expuestos |
| 11 | Reporte y remediación | Documentar y priorizar vulnerabilidades y riesgos.
Proveer de reportes detallados a las partes interesadas.
Asistir a los desarrolladores a corregir los fallos y volver a probar la aplicación para asegurarse que los cambios fueron exitosos |
| 12 | Post-engagement | Tener reuniones de trabajo luego de las pruebas para discutir resultados.
Proveer de entrenamiento al equipo de desarrollo para promover practicar de codificación segura. |
OWASP top 10
Es una clasificación creada para listar las 10 vulnerabilidades más comunes que afectan la web en un periodo de tiempo determinado, es actualizado regularmente por la fundación Open Web Application Security Proyect (OWASP), sirve de guía a los desarrolladores, pentesters y organizaciones para entender y priorizar riesgos de seguridad comunes.
OWASP WSTG Checklist
Es una lista usada para llevar el control de las pruebas realizadas, esta basado en la guía de seguridad OWASP e incluye una extensa lista de pruebas que un pentester puede implementar en su caso de estudio, también incluye una calculadora de riesgo y plantillas para los casos encontrados.
Con la calculadora de riesgos se calcula la severidad de cada vulnerabilidad encontrada indicando parámetros como la posibilidad de que pase y el impacto que pueda ocasionar.
En este renglón se describe las características del atacante como su nivel de habilidad técnica, motivos, insumos necesarios para realizar el ataque y el tipo de usuario necesario para realizar el ataque
En esta sección se describe la vulnerabilidad como facilidad de descubrimiento, explotación, si esta oculta o a simple vista y si es detectada y logueada
En esta parte se describe el impacto técnico que presenta la vulnerabilidad como perdida de confidencialidad, integridad y disponibilidad de los datos aparte de perdida de seguimiento de los mismos
En esta parte describimos el posible impacto que puede tener en el negocio como perdidas financieras, de reputación, cumplimiento de normas o privacidad
Pre-Engagement
En esta fase se planifican las pruebas a realizar, se muestran los alcances del proyecto y se obtienen las autorizaciones necesarias para realizar la prueba, también se discuten aspectos técnicos y legales.
En esta fase se documentan:
Objetivos y alcance
Tiempo e hitos
Responsabilidades
Acciones autorizadas
Expectativas y entregables
En esta fase se clarifican los objetivos de las pruebas y se toma en cuenta que es lo que se aspira obtener a través del proceso de las pruebas, se definen los alcances de las pruebas como funcionalidades y URLs a ser probadas, así como las que están fuera de alcance como redes o sistemas, también se obtiene las autorizaciones legales pertinentes.
Se definen las Reglas de Ataque que son las restricciones y guías para el proceso de pruebas, se imponen horarios, canales de comunicación como coordinadores de las diversas áreas involucradas, así como procedimientos para escalar novedades.
Si es necesario se firma un acuerdo de confidencialidad, y se asegura que todos los involucrados tienen las herramientas, licencias y recursos necesarios, si el riesgo de las pruebas es muy alto algunas empresas pueden contactar con empresas de seguros.
Reporte Final
Comprende un compendio detallado sobre la postura de seguridad de la aplicación, esta fase inicia desde que se firman las reglas de ataque con el cliente, se debe conversar con el cliente que necesita que aparezca en el reporte.
Se debe documentar de manera organizada y concisa las incidencias encontradas, esto es el núcleo del informe final, este informe debe estar redactado según el personal objetivo, uno tipo resumen para la gerencia y otro detallado para el personal técnico, se puede incluir mapas mentales y hojas de calculo.
Estructura del reporte final:
Alcance y metodología
Vulnerabilidades encontradas
Pruebas de concepto
Puntaje de riesgos
Plan de remediación
Recomendaciones
Apéndices y datos técnicos