Este documento presenta una introducción a las pruebas de abuso como una actividad dentro del ciclo de testing para verificar aspectos de seguridad en las aplicaciones. Se discuten algunas áreas clave para realizar pruebas de abuso como el manejo de sesiones, la lógica de negocio y el control de acceso. El objetivo es detectar vulnerabilidades de seguridad manipulando las funcionalidades de la aplicación de manera no esperada para explotar controles deficientes y obtener beneficios no pensados.
Taller evento TestingUY 2017 - Incorporando Seguridad a las Tareas de Testing
1. INCORPORANDO
SEGURIDAD A LAS TAREAS
DE TESTING.
Gastón Marichal
gmarichal@genexuscosulting.com
@gamarichal
Rodrigo de la Fuente
rdelafuente@genexusconsulting.com
15 y 16 de mayo, 2017
www.testinguy.org
#testinguy |@testinguy
7. Introducción - Objetivos
o Disminuir la cantidad de vulnerabilidades de
seguridad que llegan a producción.
o Poner a prueba los mecanismos de seguridad de la
aplicación y su adecuación con estándares y buenas
prácticas de seguridad.
8.
9. Introducción - ¿Por qué en testing?
o Incorporar otro nivel de seguridad en etapas
tempranas.
o Si llega a Producción, ya es demasiado tarde.
o Cuanto antes se detecte, menor será el costo de
arreglo
o La seguridad no es solo tarea de hackers
10. Introducción - ¿Por qué en testing?
o Relacionado con el testing funcional de la aplicación.
o Acceso a la documentación y características del
sistema.
o Mayor conocimiento de la aplicación
o Ejecución controlada en ambientes de test y pre-prod.
11. Introducción - ¿Cómo lo haremos?
o Incorporando la realización de Pruebas de Abuso
como una actividad dentro del ciclo de testing para
verificar aspectos de seguridad en las aplicaciones.
12. Introducción - Pruebas de abuso
o Utilizar las funcionalidades de la aplicación de una
manera no pensada.
o Se busca manipular las reglas de negocio, para
obtener un beneficio.
o Explotar controles deficientes y cursos alternativos
no pensados.
13. Introducción – Consideraciones
oNo es un test de seguridad completo.
o Se enfoca únicamente en las funcionalidades
oNo suplanta a un test de penetración.
o El test de penetración es otra barrera de seguridad
necesaria
14. Introducción - Organización del seminario
o Casos de Abuso sobre una aplicación web
o Ejemplos de posibles vulnerabilidades
o Recomendaciones y Buenas Prácticas de seguridad
17. Manejo de sesiones
o Inicio de sesión.
o Gestión de las contraseñas.
o Actualización de los datos.
o Gestión de la sesión.
18. Inicio de Sesión - Definición
o Mecanismo por el cual el sistema valida que la
entidad es quien dice ser.
o Distintas formas:
o Algo que conozco - Usuario / Password
o Algo que poseo - Certificado Digital
o Algo que soy - Biometría
19. Inicio de Sesión - Buenas prácticas
o Nombres de usuario no deben diferenciar
mayúsculas y minúsculas.
20. Inicio de Sesión - Buenas prácticas
o No permitir enumeración de usuarios
o Usuario y/o password incorrectos.
o Credenciales incorrectas.
21. Inicio de Sesión - Buenas prácticas
o Bloquear usuarios luego de varios intentos
fallidos.
o Bloquear temporalmente la cuenta
oTiempos incrementales (20 seg, 1 min, 5 min)
o Bloquear la sesión si continúan los intentos.
o Agregar Captcha en la pantalla tras varios intentos del
usuario.
22. Inicio de Sesión - Buenas prácticas
o Mantener un log de cada intento de
autenticación fallida.
o Almacenando:
oIP Origen
oUsername utilizado
oResultado
23. Inicio de Sesión - Buenas prácticas
o Evitar credenciales por parámetro y credenciales en
texto claro.
24. Gestión de las contraseñas
o Fortaleza de las contraseñas:
o Una contraseña se considera fuerte cuando es
difícil de adivinar por medio de un atacante.
o Deben estar alineada a los requerimientos del
proyecto/sistema.
25. Gestión de las contraseñas
o Fortaleza de las contraseñas – Consideraciones
o Largo (mínimo y máximo)
o Juegos de caracteres (a-z,A-Z,0-9, especiales)
o Periodo de validez
o Histórico
o Etc.
26. Gestión de las contraseñas
DEMO 1 - Recuperación de la contraseña:
Si es posible adivinar una preguntas secretas,
entonces no es segura!
o Equipo favorito de futbol
o Ciudad de Nacimiento
o Apellido de la madre
28. Gestión de las contraseñas
Recuperación de la contraseña
o Las preguntas secretas no deben ser predecibles.
o Información del usuario:
oRedes sociales
oPágina de la empresa
oIngeniería Social
29. Gestión de las contraseñas
Recuperación de la contraseña
o Enviar un token utilizando otro canal.
o E-mail, sms, etc.
o Válido por única vez, por cierto tiempo.
o Cambio de la contraseña o creación de una nueva
no predecible.
o La contraseña no debe ser recuperable.
30. Gestión de las contraseñas
Recuperación de la contraseña
o No bloquear el login del usuario.
o Bloquear la sesión web tras varios intentos fallidos.
o No pedir nuevo email.
o Enviar al mail que tiene registrado el usuario.
31.
32. Actualización de los datos - Buenas prácticas
Siempre pedir contraseña para confirmar cambios de:
o Username
o E-mail
o Password
Ya que son utilizados para:
o Iniciar sesión.
o Recuperar contraseña.
o Notificar los cambios.
33. Actualización de los datos - Buenas prácticas
Notificar dicho cambio al usuario:
o email (original)
o sms
o Llamada
34. Gestión de la sesión.
o Proceso por el cual el servidor conserva el estado de
una entidad con la cual está interactuando.
o Almacenadas en el servidor utilizando un
identificador de sesión, que deben ser únicos por
usuario y difíciles de predecir.
o Enviado entre el cliente y el servidor en cada pedido
y respuesta.
37. Gestión de la sesión.
Cierre de sesión:
o Logout: Manual al salir del sistema
o Expiración: Automática, luego de un tiempo
determinado de inactividad.
o Destruir sesión en el servidor
38. Gestión de la sesión.
DEMO 2 - Cierre de sesión: Logout manual
Verificar mecanismos de destrucción de sesiones, si estos
Faltan/Fallan la sesión puede no cerrarse y permitir que
otros usuarios operen bajo mi sesión.
39. Gestión de la sesión.
DEMO 3 - Cierre de sesión: Robo de sesión
Ingresar con la misma sesión de un usuario
autenticado, aunque haya cerrado sesión.
41. Lógica de Negocio - Definición
o Son las reglas mediante las cuales se rige el
sistema.
o Conformado por las funcionalidades del sistema.
o Es única para cada aplicación.
o Documentada en casos de uso.
42. Lógica de Negocio - Explotación
Se necesita pensar diferente
o Fuera del uso convencional del sistema
o Utilizar la creatividad y experiencia
Es un trabajo manual
o Difícil de automatizar
o Requiere conocer el sistema, sus reglas y
procedimientos de negocio (Documentación)
43. Lógica de Negocio - Atacante
o Intentar explotar la lógica del negocio
o Obtener ventajas/beneficios extras
o Aprovechar funcionalidades/controles deficientes
44. Lógica de Negocio - ¿Qué hacer?
o Debemos pensar como un atacante
o Conocer el software y sus características
o Detectar posibles puntos de vulnerabilidad
o Verificarlos ejecutando casos de mal uso o abuso
del software
45. Lógica de Negocio - Verificación
o Validación de datos de la lógica de negocio
o Capacidad para manipular solicitudes
o Controles de integridad
o Timing de procesos
o Limitar uso de funciones (cantidad)
o Evasión de flujo normal de trabajo
o Carga de archivos no esperados y/o maliciosos
46. Lógica de Negocio - Verificación
Validaciones de datos de la lógica de negocio
o El sistema no debe “confiar” en los datos que recibe, un
atacante puede insertar datos lógicamente inválidos
o Los datos pueden ser manipulados durante el proceso
oEtapas del workflow
oPuntos de comunicación con otros sistemas
oTráfico HTTP
o Deben existir mecanismos que validen estos datos.
47. Lógica de Negocio - Verificación
Validaciones de datos de la lógica de negocio
o Con solo verificar los datos en el cliente no es suficiente
oSe puede interceptar el tráfico y enviar datos lógicamente
inválidos
48. Lógica de Negocio - Verificación
Ej.: Validaciones de datos de la lógica de negocio
Sub-sistema de
Compras
Sub-sistema de
Despacho
49. Lógica de Negocio - Verificación
Validaciones de datos de la lógica de negocio
¿Como probar?
oDetectar los puntos de entrada o comunicación del sistema.
oRealizar un testeo exploratorio ingresando o modificando
datos lógicamente inválidos en el sistema:
oUtilizando la UI.
oCapturando y modificando el tráfico HTTP.
oTambién revisar comunicación entre sistemas.
50. Lógica de Negocio - Verificación
DEMO 4 - Validaciones de los datos
Realizar una transferencia con otro tipo de moneda
51. Lógica de Negocio - Verificación
DEMO 5 - Validaciones de los datos
Realizar una transferencia con saldos negativos
- 1000
52. Lógica de Negocio - Verificación
Capacidad para moldear solicitudes
o El atacante puede saltear la GUI y enviar información
directamente al servidor.
o Mediante un proxy se envían peticiones HTTP POST/GET con
valores inválidos para la lógica de negocio
o Incompatibles, no soportados, no esperados
o Se busca poder predecir o adivinar parámetros
o Exponer funcionalidades o pantallas ocultas del sistema.
53. Lógica de Negocio - Verificación
o Ej.: Capacidad para moldear solicitudes
PurchaseTicket?newUser=1
10% off
PurchaseTicket?newUser=0
10% off
PurchaseTicket?newUser=1
54. Lógica de Negocio - Verificación
Capacidad para moldear solicitudes
o ¿Qué debe hacer el sistema?
o Contar con chequeos lógicos en los lugares clave para
prevenir que se acepten este tipo de peticiones.
o Bloquear peticiones que no provengan de un usuario
verificado
o Evitar que el sistema delate su propia estructura
55. Lógica de Negocio - Verificación
Capacidad para moldear solicitudes
o ¿Como probar?
oRevisar en busca de funcionalidades y campos que puedan
ser predecibles o estar ocultos.
oObservar el tráfico HTTP en busca de valores que sean
predecibles o adivinables (autoincrementales, etc).
oObservar el tráfico HTTP en busca de funcionalidades ocultas
como pantallas de desarrollo o testeo.
56. Lógica de Negocio - Verificación
DEMO 6 - Capacidad para moldear solicitudes
Consultar estado de cuenta de otros usuarios,
cambiando el parámetro que viaja en la URL.
57. Lógica de Negocio - Verificación
DEMO 7 - Capacidad para moldear solicitudes
Mediante un proxy, buscar código comentado y
acceder a objeto de test.
58. Lógica de Negocio - Verificación
Controles de integridad
o Los campos ocultos o no editables que muestran información al
usuario, pueden ser manipulados en el cliente.
o El sistema no debe confiar en que estos valores no serán
alterados por un usuario.
59. Lógica de Negocio - Verificación
Controles de integridad
o Si se expone información de negocio al usuario (cantidades,
precios, stock, etc.) , se debe mantener una copia en el
servidor y utilizarla para los procesos.
o Los procesos o funcionalidades no deben depender de estos
valores ocultos o no editables.
60. Lógica de Negocio - Verificación
Controles de integridad
o ¿Como probar?
oBuscar componentes que manipulen o actualicen información.
61. Lógica de Negocio - Verificación
Controles de integridad
o ¿Como probar?
oBuscar componentes que manipulen o actualicen información.
oRevisar el tráfico HTTP en busca de campos ocultos o no
editables.
oIntentar modificar dicha información con valores inválidos.
62. Lógica de Negocio - Verificación
Controles de integridad
GUI
Controles
Canal de comunicación
Cliente
63. Lógica de Negocio - Verificación
DEMO 8 - Controles de integridad
Reducir el porcentaje de recargo de un prestamos,
manipulando la taza de recargo del mismo (GUI).
64. Lógica de Negocio - Verificación
Timing de procesos
oIdentificar funcionalidades del sistema que puedan ser
afectadas por el transcurso del tiempo.
oObtener ventajas basadas en el tiempo de operación con el
sistema.
oPrecios variantes en el correr del día
oBloquear temporalmente otros usuarios
66. Lógica de Negocio - Verificación
Ej.: Timing de procesos (2)
15:00
Price: 150
10:00
Price: 100
20:00
Price: 200
67. Lógica de Negocio - Verificación
Limitar uso de funciones (cantidad)
o ¿Que es?
o El sistema posee funciones que deben tener un control
sobre la cantidad de veces que se utiliza un elemento o
ejecuta una acción.
68. Lógica de Negocio - Verificación
Ej.: Limitar uso de funciones (cantidad)
o Reutilizar un descuento.
o Confirmar varias veces una acción.
o Cambiar o Forzar contraseñas.
69. Lógica de Negocio - Verificación
Limitar uso de funciones (cantidad)
o ¿Como probar?
o Identificar las funciones u operaciones que no deberían
ser ejecutadas más de una cierta cantidad de veces.
o Intentar ejecutarlas más de la cantidad de veces
permitidas, mediante browser o tráfico http.
70. Lógica de Negocio - Verificación
Evasión del flujo normal de trabajo
o ¿Que es?
o Permite al atacante eludir el flujo normal o esperado de
trabajo.
o No seguir la secuencia normal de operaciones.
71. Lógica de Negocio - Verificación
Ej.: Evasión del flujo normal de trabajo
o Saltear algún paso del flujo de trabajo donde no se
cuenten con mecanismos de control que dirijan las
operaciones hacia el orden correcto.
72. Lógica de Negocio - Verificación
Evasión del flujo normal de trabajo
o ¿Como probar?
o Saltear o ejecutar ciertos pasos de la aplicación en un
orden no deseado del flujo lógico y forzar una acción que
no es la esperada en esa etapa del proceso.
73. Lógica de Negocio - Verificación
Evasión del flujo normal de trabajo
o ¿Como probar?
o Identificar aquellas transacciones en las cuales se
maneje algún activo como puntos o créditos. Cancelar o
reducir la oferta final de cada transacción y verificar que
los puntos/créditos se ajusten correctamente.
74. Lógica de Negocio - Verificación
Evasión del flujo normal de trabajo
o ¿Como probar?
o Para cada formulario, introducir valores iniciales
válidos en sus campos. Posteriormente intentar editar
o eliminar dichos valores dejando los mismos en un
estado inválido y confirmar.
75. Lógica de Negocio - Verificación
DEMO 10 - Evasión del flujo normal de trabajo
Aceptar un préstamo que aún no fue aprobado.
76. Lógica de Negocio - Verificación
Carga de archivos no esperados y/o maliciosos
o ¿Que es?
o Verificar cualquier funcionalidad de subida de archivos
para el usuario.
o Al igual que con los datos, el sistema no debe confiar
nunca en estos archivos.
77. Lógica de Negocio - Verificación
Carga de archivos no esperados y/o maliciosos
o ¿Qué puede ocurrir?
oUn archivo no esperado y trancar la ejecución.
oUn archivo para explotar luego con otra vulnerabilidad
(página web, javascript, .exe)
oUn archivo que al ser parseado/ejecutado realiza acciones
indebidas.
78. Lógica de Negocio - Verificación
Ej.: Carga de archivos no esperados y/o maliciosos
79. Lógica de Negocio - Verificación
Carga de archivos no esperados y/o maliciosos
o ¿Como probar?
o Ubicar las funcionalidades en las que un usuario puede
realizar la subida de un archivo.
o Diferentes tipos de archivos, archivos maliciosos, múltiples
archivos
80. Lógica de Negocio - Verificación
Carga de archivos no esperados y/o maliciosos
o ¿Como probar?
o Mantener una lista de archivos aceptables y comparar
siempre contra ella.
o Realizar la subida de archivos indebidos.
o Verificar que los mecanismos de validación prevengan la
carga.
81. Lógica de Negocio - Verificación
DEMO 11 - Carga de archivos no esperados
y/o maliciosos
Actualizar la imagen de perfil con un archivo
malicioso.
83. Control de Acceso
o Es el control selectivo y restrictivo a un recurso.
o La aplicación funciona correctamente.
o Probar quién lo puede hacer.
84. Control de Acceso
o Ausencia de control de acceso a funciones.
o Exposición de datos sensibles.
o Referencia directa insegura a objetos.
85. Control de Acceso
Ausencia de control de acceso a funciones.
o ¿Qué es?
o Un usuario obtiene acceso a funciones privilegiadas que no
debería.
o Se realiza el control de acceso en la interfaz de usuario,
pero no, en la ejecución la acción.
86. Control de Acceso
Ausencia de control de acceso a funciones.
o ¿Como probar?
o La interfaz de usuario la controla el navegador.
o Se debe buscar:
oBotones deshabilitados.
oBotones ocultos.
oLinks ocultos.
87. Control de Acceso
DEMO 12 - Ausencia de control de acceso a
funciones.
Aprobarse un préstamo, habilitando un botón en la
GUI.
88. Control de Acceso
Exposición de datos sensibles.
o ¿Qué es?
o Cierta información puede ser considerada sensible.
oDatos personales, información financiera o laboral.
o Depende de la industria y las regulaciones
gubernamentales.
89. Control de Acceso
Exposición de datos sensibles.
o ¿Como probar?
o Almacenamiento: Logs, archivos intermedios.
o Interfaz: información sensible puede ser enviada al
navegador y estar oculta: Hidden, display = None, etc.
o Cachés intermedios y del navegador:
o chrome://cache o about:cache
90. Control de Acceso
Exposición de datos sensibles.
o ¿Como probar?
o Cachés intermedios y del navegador:
ochrome://cache
oabout:cache
91. Control de Acceso
DEMO 13 - Exposición de datos sensibles.
o Inspeccionar las transferencias y visualizar el
saldo de una cuenta ajena.
92. Control de Acceso
Referencia directa insegura a objetos.
o ¿Qué es?
o Exposición de una referencia a un objeto de
implementación interno sin verificar control de acceso
oArchivo, Carpeta, Base de Datos
o Un atacante pueden manipular estas referencias para
acceder a datos no autorizados
93. Control de Acceso
DEMO 14 - Referencia directa insegura a
objetos.
Ingresar a un estado de cuenta cambiando los
parámetros en la URL
95. Despliegue
Configuración de seguridad incorrecta:
o Configurar correctamente los Usuarios, roles y permisos
que el sistema tendrá en Producción.
o Revisar y depurar:
oObjetos y roles creados en test.
oObjetos no utilizados u obsoletos (Developer Menu, Objetos
viejos, etc.
o Optar por un tráfico HTTPS y URL cifradas
96. Despliegue
DEMO 15 - Configuración de seguridad
incorrecta
Acceder a objetos de desarrollo/test que no se
depuraron en producción.
97. Referencias:
oOWASP - Testing guide 4.0
https://www.owasp.org/images/5/52/OWASP_Testing_Guide_v4.pdf
oOWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic
oOWASP - Authentication Cheat Sheet Español
https://www.owasp.org/index.php/Authentication_Cheat_Sheet_Español
oOWASP - TOP 10
https://www.owasp.org/index.php/Top_10_2013-Top_10
oSymantec - Internet Security Threat Report
https://www.symantec.com/content/dam/symantec/docs/reports/istr-22-2017-en.pdf