Ciclo de Vida de un Pentesting Web

Ciclo de Vida de un Pentesting Web

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

AspectoWeb App Security testingWeb App Pentesting
ObjetivoIdentificar vulnerabilidades y debilidades sin explotarlas activamenteIntentar activamente explotar las vulnerabilidades identificadas
MetodologíaVarios tipos de pruebasUsar herramientas y técnicas que simulan ataques reales
EnfoqueEnfoque amplio que incluye pruebas automáticas y manualesEspecíficas para para identificar vulnerabilidades, enfoque manual
ImpactoNo intrusivo, se enfoca en identificar problemasPuede ser intrusivo causando interrupciones durante la prueba
ReporteIdentificar vulnerabilidades y proveer recomendacionesDocumentar exploits exitosos, identificar debilidades y recomendar remediaciones
ObjetivosAumentar la postura de seguridad de la aplicación webValidar 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

FaseObjetivos
1Pre-engagementSe 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.

  1. 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

  2. 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

  3. 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

  4. 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