security testing
Cómo probar la seguridad de las aplicaciones: técnicas de prueba de seguridad de aplicaciones web y de escritorio
¿La necesidad de pruebas de seguridad?
La industria del software ha logrado un sólido reconocimiento en esta era. En la última década, sin embargo, el mundo cibernético parece ser una fuerza aún más dominante e impulsora que está dando forma a las nuevas formas de casi todos los negocios. Los sistemas ERP basados en la web que se utilizan hoy en día son la mejor prueba de que la TI ha revolucionado nuestra amada aldea global.
En estos días, los sitios web no están diseñados solo para publicidad o marketing, sino que se han convertido en herramientas más sólidas para satisfacer las necesidades comerciales completas.
Los sistemas de nómina basados en la web, los centros comerciales, la banca y la aplicación de comercio de acciones no solo están siendo utilizados por las organizaciones, sino que también se venden como productos en la actualidad.
Esto significa que las aplicaciones en línea se han ganado la confianza de clientes y usuarios con respecto a su función vital denominada SEGURIDAD.
Sin duda, el factor de seguridad también es un valor primordial para las aplicaciones de escritorio.
Sin embargo, cuando hablamos de la web, la importancia de la seguridad aumenta exponencialmente. Si un sistema en línea no puede proteger los datos de las transacciones, nadie pensará en usarlo. La seguridad no es todavía una palabra en busca de su definición, ni es un concepto sutil. Sin embargo, me gustaría enumerar algunos cumplidos sobre seguridad.
Preguntas y respuestas de la entrevista de Python para probadores
Ejemplos de fallas de seguridad en una aplicación
- Un sistema de gestión de estudiantes no es seguro si la rama 'Admisión' puede editar los datos de la rama 'Examen'
- Un sistema ERP no es seguro si el DEO (operador de entrada de datos) puede generar 'informes'
- Un centro comercial en línea no tiene seguridad si el detalle de la tarjeta de crédito del cliente no está encriptado
- Un software personalizado posee una seguridad inadecuada si una consulta SQL recupera las contraseñas reales de sus usuarios.
Seguridad
Ahora, les presento la definición más simple de Seguridad en mis propias palabras.
'Seguridad significa que se otorga acceso autorizado a datos protegidos y el acceso no autorizado está restringido' .
Entonces, tiene dos aspectos principales; el primero es la protección de datos y el segundo es el acceso a esos datos. Además, ya sea que la aplicación sea de escritorio o basada en la web, la seguridad gira en torno a los dos aspectos antes mencionados.
Tengamos una descripción general de los aspectos de seguridad para aplicaciones de software de escritorio y basadas en la web.
Lo que vas a aprender:
- Pruebas de seguridad web y de escritorio
- Lista de las 8 mejores técnicas de prueba de seguridad
- # 1) Acceso a la aplicación
- # 2) Protección de datos
- # 3) Ataque de fuerza bruta
- # 4) Inyección de SQL y XSS (Scripting entre sitios)
- # 5) Puntos de acceso al servicio (sellados y abiertos de forma segura)
- # 6) Gestión de sesiones
- # 7) Manejo de errores
- # 8) Funcionalidades de riesgo específicas
- Lectura recomendada
Pruebas de seguridad web y de escritorio
Una aplicación de escritorio debe ser segura no solo con respecto a su acceso, sino también con respecto a la organización y almacenamiento de sus datos.
Asimismo, la aplicación web exige, aún más, seguridad en su acceso, junto con protección de datos. Un desarrollador web debe hacer que la aplicación sea inmune a las inyecciones de SQL, ataques de fuerza bruta y XSS (secuencias de comandos entre sitios). Del mismo modo, si la aplicación web facilita los puntos de acceso remoto, estos también deben ser seguros.
Además, tenga en cuenta que Brute Force Attack no solo está relacionado con aplicaciones web, el software de escritorio también es vulnerable a esto.
Espero que este prólogo sea suficiente y ahora permítanme ir al grano. Amablemente acepte mis disculpas si hasta ahora pensó que estaba leyendo sobre el tema de este artículo. Aunque he explicado brevemente la seguridad del software y sus principales preocupaciones, mi tema es 'Pruebas de seguridad'.
Lectura recomendada => Pruebas de seguridad de aplicaciones web
Ahora explicaré cómo se implementan las características de seguridad en la aplicación de software y cómo deben probarse. Mi atención se centrará en los aspectos de las pruebas de seguridad, no en la seguridad.
Herramientas de prueba de seguridad recomendadas
# 1) parker neto
Netsparker es una solución de prueba de seguridad de aplicaciones web con capacidades de rastreo y escaneo automáticos para todo tipo de aplicaciones web heredadas y modernas, como HTML5, Web 2.0 y aplicaciones de página única. Utiliza tecnología de escaneo basada en pruebas y agentes de escaneo escalables.
Le brinda una visibilidad completa aunque tenga una gran cantidad de activos para administrar. Tiene muchas más funcionalidades como gestión de equipos y gestión de vulnerabilidades. Se puede integrar en las plataformas CI / CD como Jenkins, TeamCity o Bamboo.
=> Pruebe la mejor herramienta de prueba de seguridad de Netsparker#2) Kiuwan
Encuentre y corrija vulnerabilidades en su código en cada etapa del SDLC.
Kiuwan cumple con los estándares de seguridad más estrictos, incluidos OWASP, CWE, SANS 25, HIPPA y más. Integre Kiuwan en su IDE para obtener comentarios instantáneos durante el desarrollo. Kiuwan es compatible con los principales lenguajes de programación y se integra con las principales herramientas de DevOps.
=> Escanea tu código gratis#3) Indusface WAS Comprobación gratuita de malware en sitios web
Indusface FUE proporciona pruebas de penetración manuales junto con su propio escáner de vulnerabilidades de aplicaciones web automatizado que detecta e informa vulnerabilidades según el top 10 de OWASP y también incluye una verificación de reputación del sitio web de enlaces, malware y comprobaciones de desfiguración del sitio web en cada escaneo
=> Ejecute un escaneo rápido de sitios web de forma gratuita
=> Contáctenos para sugerir una lista aquí.
Lista de las 8 mejores técnicas de prueba de seguridad
# 1) Acceso a la aplicación
Ya sea una aplicación de escritorio o un sitio web, la seguridad de acceso se implementa mediante 'Gestión de funciones y derechos'. A menudo se hace implícitamente mientras cubre la funcionalidad,
Por ejemplo, en un sistema de gestión hospitalaria, un recepcionista está menos preocupado por las pruebas de laboratorio, ya que su trabajo es simplemente registrar a los pacientes y programar sus citas con los médicos.
Por lo tanto, todos los menús, formularios y pantallas relacionados con las pruebas de laboratorio no estarán disponibles para el rol de 'Recepcionista'. Por lo tanto, la implementación adecuada de roles y derechos garantizará la seguridad del acceso.
Cómo probar: Para probar esto, se deben realizar pruebas exhaustivas de todos los roles y derechos.
El evaluador debe crear varias cuentas de usuario con roles diferentes y múltiples. Luego, debe usar la aplicación con la ayuda de estas cuentas y debe verificar que cada rol tenga acceso a sus propios módulos, pantallas, formularios y menús únicamente. Si el evaluador encuentra algún conflicto, debe registrar un problema de seguridad con total confianza.
Esto también puede entenderse como pruebas de autenticación y autorización, que se muestran muy bien en la siguiente imagen:
Entonces, básicamente, necesitas probar sobre 'quién eres' y 'qué puedes hacer' para distintos usuarios.
Algunas de las pruebas de autenticación incluyen una prueba para las reglas de calidad de la contraseña, prueba para los inicios de sesión predeterminados, prueba para la recuperación de la contraseña, prueba del captcha, prueba de la funcionalidad de cierre de sesión, prueba del cambio de contraseña, prueba de la pregunta / respuesta de seguridad, etc.
De manera similar, algunas de las pruebas de autorización incluyen una prueba de recorrido de ruta, una prueba de autorización faltante, una prueba de problemas de control de acceso horizontal, etc.
# 2) Protección de datos
Hay tres aspectos de la seguridad de los datos. El primero es que un usuario puede ver o utilizar solo los datos que se supone que debe usar . Esto también está garantizado por roles y derechos.
Por ejemplo, TSR (representante de televentas) de una empresa puede ver los datos del stock disponible, pero no puede ver cuánta materia prima se compró para la producción.
Entonces, este aspecto de las pruebas de seguridad ya se explicó anteriormente. El segundo aspecto de la protección de datos está relacionado con cómo se almacenan esos datos en la base de datos .
Más lecturas = >> ¿Qué son las pruebas de seguridad de la base de datos?
Todos los datos sensibles deben estar encriptados para que estén seguros. El cifrado debe ser sólido, especialmente para datos confidenciales como contraseñas de cuentas de usuario, números de tarjetas de crédito u otra información comercial crítica.
El tercer y último aspecto es una extensión de este segundo aspecto. Deben adoptarse las medidas de seguridad adecuadas cuando se produce el flujo de datos confidenciales o críticos para el negocio. Ya sea que estos datos floten entre diferentes módulos de la misma aplicación o se transmitan a diferentes aplicaciones, deben estar encriptados para mantenerlos seguros.
Cómo probar la protección de datos: El evaluador debe consultar la base de datos en busca de 'contraseñas' de la cuenta de usuario, información de facturación de los clientes, otros datos comerciales críticos y confidenciales y debe verificar que todos esos datos se guarden en forma cifrada en la base de datos.
Del mismo modo, debe verificar que los datos se transmitan entre diferentes formularios o pantallas solo después del cifrado adecuado. Además, el evaluador debe asegurarse de que los datos cifrados se descifren correctamente en el destino. Se debe prestar especial atención a las diferentes acciones de 'envío'.
El evaluador debe verificar que cuando la información se transmite entre el cliente y el servidor, no se muestra en la barra de direcciones de un navegador web en un formato comprensible. Si alguna de estas verificaciones falla, la aplicación definitivamente tiene una falla de seguridad.
El probador también debe verificar el uso adecuado de la salazón (agregando un valor secreto adicional a la entrada final como contraseña y, por lo tanto, haciéndola más fuerte y más difícil de descifrar).
La aleatoriedad insegura también debe probarse, ya que es un tipo de vulnerabilidad. Otra forma de probar la protección de datos es verificar el uso de algoritmos débiles.
Por ejemplo, Dado que HTTP es un protocolo de texto claro, si los datos confidenciales, como las credenciales de usuario, se transmiten a través de HTTP, es una amenaza para la seguridad de las aplicaciones. En lugar de HTTP, los datos confidenciales deben transferirse a través de HTTPS (protegido mediante SSL, túnel TLS).
la puerta de enlace predeterminada no está disponible arreglar Windows 10
Sin embargo, HTTPS aumenta la superficie de ataque y, por lo tanto, se debe probar que las configuraciones del servidor son adecuadas y que se garantiza la validez del certificado.
# 3) Ataque de fuerza bruta
Brute Force Attack se realiza principalmente mediante algunas herramientas de software. El concepto es que al usar una identificación de usuario válida, el s oftware intenta adivinar la contraseña asociada al intentar iniciar sesión una y otra vez.
Un ejemplo simple de seguridad contra un ataque de este tipo es la suspensión de la cuenta por un período corto de tiempo, como lo hacen todas las aplicaciones de correo como 'Yahoo', 'Gmail' y 'Hotmail'. Si un número específico de intentos consecutivos (en su mayoría 3) no logra iniciar sesión correctamente, esa cuenta se bloquea durante algún tiempo (de 30 minutos a 24 horas).
Cómo probar el ataque de fuerza bruta: El evaluador debe verificar que algún mecanismo de suspensión de cuenta esté disponible y funcione correctamente. (S) Debe intentar iniciar sesión con ID de usuario y contraseñas no válidas, alternativamente, para asegurarse de que la aplicación de software bloquee las cuentas si se realizan intentos continuos de iniciar sesión con credenciales no válidas.
Si la aplicación lo hace, es segura contra ataques de fuerza bruta. De lo contrario, el evaluador debe informar de esta vulnerabilidad de seguridad.
Las pruebas de fuerza bruta también se pueden dividir en dos partes: pruebas de caja negra y pruebas de caja gris.
En las pruebas de caja negra, el método de autenticación empleado por la aplicación se descubre y prueba. Además, la prueba de la caja gris se basa en el conocimiento parcial de la contraseña y los detalles de la cuenta y los ataques de compensación de memoria.
Hacer clic aquí para explorar las pruebas de fuerza bruta de caja negra y caja gris junto con ejemplos.
Los tres aspectos de seguridad anteriores deben tenerse en cuenta tanto para las aplicaciones web como para las de escritorio, mientras que los siguientes puntos están relacionados únicamente con las aplicaciones web.
# 4) Inyección de SQL y XSS (Scripting entre sitios)
Conceptualmente hablando, el tema de estos dos intentos de piratería es similar, por lo que se discuten juntos. En este enfoque, el Los piratas informáticos utilizan un script malicioso para manipular un sitio web. .
Hay varias formas de inmunizarse contra tales intentos. Para todos los campos de entrada del sitio web, las longitudes de los campos deben definirse lo suficientemente pequeñas como para restringir la entrada de cualquier script.
la mejor herramienta de revisión de código para git
Por ejemplo, El apellido debe tener una longitud de campo de 30 en lugar de 255. Puede haber algunos campos de entrada en los que sea necesaria una entrada de datos grande, para tales campos se debe realizar una validación adecuada de la entrada antes de guardar esos datos en la aplicación.
Además, en dichos campos, se debe prohibir cualquier entrada de etiquetas HTML o script. Para provocar ataques XSS, la aplicación debe descartar los redireccionamientos de scripts de aplicaciones desconocidas o que no sean de confianza.
Cómo prueba de inyección SQL y XSS: El probador debe asegurarse de que se definan e implementen las longitudes máximas de todos los campos de entrada. (S) También debe asegurarse de que la longitud definida de los campos de entrada no se adapte a ninguna entrada de script ni a la entrada de etiquetas. Ambos se pueden probar fácilmente
Por ejemplo, Si 20 es la longitud máxima especificada para el campo 'Nombre' y la cadena de entrada '
thequickbrownfoxjumpsothelazydog ”puede verificar ambas restricciones.
El evaluador también debe verificar que la aplicación no admita métodos de acceso anónimos. En caso de que exista alguna de estas vulnerabilidades, la aplicación está en peligro.
Básicamente, las pruebas de inyección de SQL se pueden realizar de las siguientes cinco formas:
- Técnicas de detección
- Técnicas estándar de inyección SQL
- Huella digital de la base de datos
- Explotación técnica
- Técnicas de invasión de firma de inyección SQL
Hacer clic aquí para leer en detalle sobre las formas anteriores de probar la inyección SQL.
XSS también es un tipo de inyección que inyecta un script malicioso en un sitio web. Hacer clic aquí para explorar en profundidad sobre las pruebas para XSS.
# 5) Puntos de acceso al servicio (sellados y abiertos de forma segura)
Hoy en día, las empresas dependen y colaboran entre sí, lo mismo ocurre con las aplicaciones, especialmente los sitios web. En tal caso, ambos colaboradores deben definir y publicar algunos puntos de acceso entre ellos.
Hasta ahora, el escenario parece bastante simple y directo pero, para algunos productos basados en la web como el comercio de acciones, las cosas no son tan simples y fáciles.
Cuando hay una gran cantidad de público objetivo, los puntos de acceso deben estar lo suficientemente abiertos para facilitar a todos los usuarios, con capacidad suficiente para cumplir con las solicitudes de todos los usuarios y lo suficientemente seguros para hacer frente a cualquier prueba de seguridad.
Cómo probar los puntos de acceso al servicio: Déjame explicarte con el ejemplo de la aplicación web de negociación de acciones; un inversor (que quiera comprar las acciones) debe tener acceso a datos actuales e históricos sobre los precios de las acciones. El usuario debe tener la posibilidad de descargar estos datos históricos. Esto exige que la aplicación esté lo suficientemente abierta.
Por complaciente y seguro, me refiero a que la aplicación debería facilitar a los inversores el comercio libre (según las regulaciones legislativas). Pueden comprar o vender 24 horas al día, 7 días a la semana y los datos de las transacciones deben ser inmunes a cualquier ataque de piratería.
Además, una gran cantidad de usuarios interactuará con la aplicación simultáneamente, por lo que la aplicación debe proporcionar suficientes puntos de acceso para entretener a todos los usuarios.
En algunos casos, estos los puntos de acceso se pueden sellar para aplicaciones o personas no deseadas . Esto depende del dominio comercial de la aplicación y sus usuarios,
Por ejemplo, Un sistema de administración de oficina personalizado basado en la web puede reconocer a sus usuarios sobre la base de direcciones IP y se niega a establecer una conexión con todos los demás sistemas (aplicaciones) que no se encuentran en el rango de direcciones IP válidas para esa aplicación.
El probador debe asegurarse de que todos los acceso entre redes e intrarredes a la aplicación es por aplicaciones, máquinas (IP) y usuarios de confianza.
Para verificar que un punto de acceso abierto es lo suficientemente seguro, el evaluador debe intentar acceder a él desde diferentes máquinas que tengan direcciones IP confiables y no confiables. Se deben probar diferentes tipos de transacciones en tiempo real de forma masiva para tener una buena confianza en el rendimiento de la aplicación. Al hacerlo, también se observará claramente la capacidad de los puntos de acceso de la aplicación.
El evaluador debe asegurarse de que la aplicación reciba todas las solicitudes de comunicación de IP y aplicaciones confiables solo mientras se rechazan todas las demás solicitudes.
Del mismo modo, si la aplicación tiene algún punto de acceso abierto, el evaluador debe asegurarse de que permite (si es necesario) la carga de datos por parte de los usuarios de forma segura. De esta manera segura, me refiero al límite de tamaño del archivo, la restricción del tipo de archivo y el escaneo del archivo cargado en busca de virus u otras amenazas de seguridad.
Así es como un tester puede verificar la seguridad de una aplicación con respecto a sus puntos de acceso.
# 6) Gestión de sesiones
Una sesión web es una secuencia de transacciones de solicitud y respuesta HTTP vinculadas con el mismo usuario. Las pruebas de administración de sesiones verifican cómo se maneja la administración de sesiones en la aplicación web.
Puede probar el vencimiento de la sesión después de un tiempo de inactividad particular, la finalización de la sesión después de la vida útil máxima, la finalización de la sesión después del cierre de sesión, verificar el alcance y la duración de la cookie de sesión, probar si un solo usuario puede tener múltiples sesiones simultáneas, etc.
# 7) Manejo de errores
Las pruebas para el manejo de errores incluyen:
Verifique los códigos de error : Por ejemplo, prueba 408 tiempo de espera de solicitud, 400 solicitudes incorrectas, 404 no encontrada, etc. Para probarlas, debes realizar ciertas solicitudes a la página de modo que se devuelvan estos códigos de error.
Los códigos de error se devuelven con un mensaje detallado. Estos mensajes no deben contener ninguna información crítica que pueda usarse con fines de piratería.
Compruebe si hay rastros de pila : Básicamente, incluye dar una entrada excepcional a la aplicación, de modo que el mensaje de error devuelto contiene rastros de pila que tienen información interesante para los piratas informáticos.
# 8) Funcionalidades de riesgo específicas
Principalmente, las dos funcionalidades de riesgo son pagos y cargas de archivos . Estas funcionalidades deben probarse muy bien. Para las cargas de archivos, debe probar principalmente que cualquier carga de archivos no deseada o maliciosa esté restringida.
Para los pagos, debe probar principalmente las vulnerabilidades de inyección, almacenamiento criptográfico inseguro, desbordamientos de búfer, adivinación de contraseñas, etc.
=> Contáctenos para sugerir una lista aquí.Otras lecturas:
- Pruebas de seguridad de aplicaciones web
- Las 30 preguntas principales de la entrevista sobre pruebas de seguridad
- Diferencia entre SAST / DAST / IAST / RASP
- 20 principales vulnerabilidades de seguridad de SANS
Lectura recomendada
- Guía de pruebas de seguridad de aplicaciones web
- Pruebas alfa y beta (una guía completa)
- Tutorial de pruebas de almacenamiento de datos de pruebas ETL (una guía completa)
- Pruebas de seguridad de red y las mejores herramientas de seguridad de red
- Guía para principiantes sobre pruebas de penetración de aplicaciones web
- Guía completa de pruebas de verificación de compilación (pruebas de BVT)
- Pruebas funcionales versus pruebas no funcionales
- Una guía completa de pruebas de penetración con ejemplos de casos de prueba