Pasos que debe tomar en cuenta para pruebas de seguridad de aplicaciones web

Share this…

Cada análisis de seguridad de una aplicación web debe incluir los pasos recomendados por expertos en seguridad informatica. Las herramientas de análisis de vulnerabilidades desarrolladas por el instituto internacional de seguridad cibernética, siguen las siguientes fases.

application

Para la recopilación de información los expertos en seguridad informatica recomiendan.

  • Explorar manualmente el sitio
  • Revisar para contenido perdido u oculto
  • Busque archivos que expongan contenido.
  • Verifique los cachés de los principales motores de búsqueda para sitios de acceso público
  • Compruebe las diferencias en el contenido según el agente de usuario (p. Ej., Sitios móviles, acceso como bot de motor de búsqueda)
  • Realizar huella digital de aplicación web
  • Identificar las tecnologías utilizadas
  • Identificar roles de usuario
  • Identificar los puntos de entrada de la aplicación
  • Identificar el código del lado del cliente
  • Identificar múltiples versiones / canales (por ejemplo, web, web móvil, aplicación móvil, servicios web)
  • Identificar aplicaciones cohospetadas y relacionadas
  • Identificar todos los nombres de host y puertos
  • Identificar contenido alojado de terceros

En cuanto a la gestión de configuración

  • Verificar las URL administrativas y de aplicaciones de uso común
  • Verifique archivos viejos, de respaldo y no referenciados
  • Compruebe los métodos HTTP compatibles y Cross Site Tracing (XST)
  • Probar extensiones de archivo de prueba
  • Prueba de encabezados HTTP de seguridad (por ejemplo, CSP, X-Frame-Options, HSTS)
  • Prueba de políticas (por ejemplo, Flash, Silverlight, robots)
  • Prueba de datos de no producción en el entorno en vivo, y viceversa
  • Compruebe si hay datos confidenciales en el código del lado del cliente (por ejemplo, claves de API, credenciales)

Transmisión segura

  • Comprobar SSL Version, Algorithms, Key length
  • Verificar validez del certificado digital (duración, firma y CN)
  • Verificar credenciales solo entregadas a través de HTTPS
  • Compruebe que el formulario de inicio de sesión se entregue a través de HTTPS
  • Comprobar tokens de sesión solo entregados a través de HTTPS
  • Verifique si HTTP Strict Transport Security (HSTS) está en uso

Para la autenticación

  • Prueba para la enumeración del usuario
  • Prueba de derivación de autenticación
  • Prueba de protección de fuerza bruta
  • Probar reglas de calidad de contraseña
  • Prueba recordarme la funcionalidad
  • Prueba de autocompletar en formularios / entrada de contraseña
  • Prueba restablecimiento y / o recuperación de contraseña
  • Proceso de cambio de contraseña de prueba
  • Prueba CAPTCHA
  • Prueba de autenticación de múltiples factores
  • Prueba de presencia de funcionalidad de cierre de sesión
  • Prueba de gestión de caché en HTTP (por ejemplo, Pragma, Caduca, edad máxima)
  • Prueba de inicios de sesión predeterminados
  • Prueba de historial de autenticación accesible para el usuario
  • Pruebe la notificación fuera del canal de bloqueos de cuenta y cambios de contraseña exitosos
  • Prueba de autenticación consistente en todas las aplicaciones con esquema de autenticación compartida / SSO

Para la gestión de sesiones

  • Establecer cómo se gestiona la sesión en la aplicación (p. Ej., Tokens en cookies, token en URL)
  • Comprobar tokens de sesión para banderas de cookies (httpOnly y secure)
  • Comprobar el alcance de la cookie de la sesión (ruta y dominio)
  • Comprobar la duración de la cookie de la sesión (caduca y max-age)
  • Verifique la terminación de la sesión después de una vida útil máxima
  • Comprobar la finalización de la sesión después del tiempo de espera relativo
  • Comprobar la finalización de la sesión después del cierre de sesión
  • Prueba para ver si los usuarios pueden tener múltiples sesiones simultáneas
  • Probar cookies de sesión por aleatoriedad
  • Confirme que los nuevos tokens de sesión se emiten al inicio de sesión, cambio de función y cierre de sesión
  • Prueba de gestión de sesiones coherente en todas las aplicaciones con administración de sesión compartida
  • Prueba para desconcertar la sesión
  • Prueba de CSRF y clickjacking

En la autorización

  • Prueba de recorrido transversal
  • Prueba para eludir el esquema de autorización
  • Prueba de problemas verticales de control de acceso (a.k.a. Privilege Escalation)
  • Prueba de problemas de control de acceso horizontal (entre dos usuarios en el mismo nivel de privilegio)
  • Prueba de falta de autorización

En cuanto a la validación de datos, los profesionales en seguridad informaticarecomiendan:

  • Prueba de scripting de sitio cruzado reflejado
  • Prueba para secuencias de comandos del sitio almacenadas cruzadas
  • Prueba de secuencias de comandos basadas en DOM.
  • Prueba de parpadeo entre sitios
  • Prueba de Inyección de HTML
  • Prueba de Inyección SQL
  • Prueba de Inyección LDAP
  • Prueba para inyección de ORM
  • Prueba de Inyección XML
  • Prueba de Inyección XXE
  • Prueba de Inyección de SSI
  • Prueba de Inyección XPath
  • Prueba para XQuery Injection
  • Prueba para inyección de IMAP / SMTP
  • Prueba de Inyección de Código
  • Prueba de inyección de lenguaje de expresión
  • Prueba de Inyección de Comando
  • Prueba de desbordamiento (pila, montón e entero)
  • Prueba de cadena de formato
  • Prueba de vulnerabilidades incubadas
  • Prueba de HTTP Splitting / Smuggling
  • Prueba de manipulación del verbo HTTP
  • Prueba de redirección abierta
  • Prueba para la inclusión de archivos locales
  • Prueba de inclusión remota de archivos
  • Compare las reglas de validación del lado del cliente y del lado del servidor
  • Prueba para inyección NoSQL
  • Prueba de contaminación por parámetro HTTP
  • Prueba de autoaglutinante
  • Prueba de asignación masiva
  • Prueba de NULL / Cookie de sesión inválida

Negación de servicio

  • Prueba de anti-automatización
  • Prueba para bloqueo de cuenta
  • Prueba para el protocolo HTTP DoS
  • Prueba de DoS de comodín SQL

Lógica de negocios

  • Prueba de uso incorrecto de características
  • Prueba por falta de no repudio
  • Prueba de relaciones de confianza
  • Prueba de integridad de datos
  • Prueba de segregación de tareas

Para la criptografía

  • Verifique si los datos que deben ser encriptados no son
  • Compruebe el uso de algoritmos incorrectos según el contexto
  • Verificar el uso de algoritmos débiles
  • Verificar el uso adecuado de la salazón
  • Verificar funciones aleatorias

Funcionalidad arriesgada: carga de archivos

  • Probar que los tipos de archivos aceptables se incluyen en la lista blanca
  • Pruebe que los límites de tamaño de archivo, la frecuencia de carga y el conteo total de archivos estén definidos y se cumplan
  • Pruebe que el contenido del archivo coincida con el tipo de archivo definido
  • Pruebe que todas las cargas de archivos tengan un análisis antivirus en contexto.
  • Pruebe que los nombres de archivo inseguros sean desinfectados
  • Prueba de que los archivos cargados no son directamente accesibles desde la raíz web
  • Prueba de que los archivos cargados no se sirven en el mismo nombre de host / puerto
  • Probar que los archivos y otros medios estén integrados con los esquemas de autenticación y autorización

Funcionalidad arriesgada – Pago con tarjeta

  • Prueba de vulnerabilidades conocidas y problemas de configuración en el servidor web y la aplicación web
  • Prueba de contraseña predeterminada o adivinable
  • Prueba de datos de no producción en el entorno en vivo, y viceversa
  • Prueba de vulnerabilidades de inyección
  • Prueba de desbordamientos de búfer
  • Prueba de almacenamiento criptográfico inseguro
  • Prueba de insuficiente protección de la capa de transporte
  • Prueba de manejo incorrecto de errores
  • Pruebe todas las vulnerabilidades con un puntaje CVSS v2> 4.0
  • Prueba de problemas de autenticación y autorización
  • Prueba para CSRF

Para HTML 5

  • Prueba de mensajería web
  • Prueba para la inyección SQL de almacenamiento web
  • Comprobar la implementación de CORS
  • Comprobar aplicación web fuera de línea