Lo Factible de No Encontrarse con un Escáner de Vulnerabilidades Web

Los escáneres de vulnerabilidades para aplicaciones web tienen algunas claras deficiencias, en lo referente a los tipos de vulnerabilidades capaces de encontrar. Siendo esto muy necesario e importante conocer, antes de seleccionar y utilizar cualquier herramienta. A continuación se presenta una lista de vulnerabilidades en aplicaciones web, las cuales potencialmente podrían no ser detectados por los escáneres automáticos, esto sin importar sean Open Source (Fuente Abierta), gratuitos, o sea un enorme producto maravilloso de miles de dólares.

Contraseñas Débiles: Aunque los “spiders” intentarán hacer “login” hacia la aplicación web con credenciales por defecto, esto es sólo para enviar el formulario y encontrar contenido adicional. En un raro evento, un login por defecto será exitoso, pero el escáner no reconoce la razón como una contraseña débil. Así si una cuenta de administrador es fácil de adivinar, el escáner no proporcionará ninguna indicación de esta vulnerabilidad.

Nombres de Parámetros Significativos: El escáner no es lo suficientemente inteligente para conocer cuales parámetros tienen un significado en la aplicación, y cuales valores diferentes de estos parámetros incluso son significativos para la seguridad y funcionalidad global. Esto es especialmente verdadero si el desarrollador ha utilizado nombres oscuros para los parámetros, como “a”, “c3po”, “skywalker”, “foo”, o utilizó un lenguaje diferente para definir variables.

Inyección SQL Ciega: Debido a esta vulnerabilidad raramente proporciona una respuesta directa de retorno hacia el escáner, en gran parte no se detecta y reporta. Esto es bastante opuesto a la inyección SQL tradicional, el cual proporciona información inmediata hacia el escáner, y de esta manera compararlas con las firmas integradas. Peor aún, algunas veces los escáneres reportarán una inyección SQL Ciega, lo cual termina siendo un falso positivo, generando una gran inversión de tiempo tratando de verificar los hallazgos del escáner.

Control de Acceso Inadecuado: La capacidad de un atacante para eludir los mecanismos para el control de acceso podrían no ser marcados por un escáner web, debido al escáner simplemente no se percata cuando un usuario puede acceder a los recursos de otro usuario (escalado de privilegios horizontales), o cuando un usuario puede acceder a los recursos del administrador (escalado de privilegios verticales). Incluso si la vulnerabilidad está presente, un escalado fuera del control de acceso previsto, se verá únicamente como otro recursos solicitado por el escáner. Esto se debe a los escáneres no pueden hacer decisiones lógicas, y podrían nunca conocer cuales parámetros y valores conducen la funcionalidad de una aplicación web.

XSS de Múltiples Etapas: Casi todas las vulnerabilidades requiriendo múltiples etapas podrían no ser detectadas por un escáner, porque este no tiene la capacidad de completar inteligentemente las etapas. Por ejemplo, un escáner no encontrará una vulnerabilidad de XSS almacenada en la tercera etapa de un procedimiento de cinco etapas, porque no es capaz de exitosamente completar las dos primeras etapas para llegar a la página vulnerable.

Navegación Forzada (Fuerza bruta a archivos y directorios): Esta vulnerabilidad, también conocida como navegación forzada, no será identificada por un escáner, porque involucra solicitar varios recursos similares de manera secuencial, y ser capaz de descifrar cuales son significativos para la aplicación web. Un escáner no los detectará porque no comprende el contexto de la funcionalidad de la aplicación weeb para cada recursos solicitado.

Ataques de Sesión: A falta de vulnerabilidades flagrantes de sesión, como la transmisión de identificadores de sesión a través HTTP inseguro, un escáner no reconocerá un ataque de sesión como fijación de sesión. Todas estos ataques involucran interacción humana, ya sea un atacante o la victima, estando fuera de cualquier escáner automático.

Fallas Lógicas: Debido a la naturaleza personalizada de las aplicaciones web, y la funcionalidad proporcionada, no existen firmas en el escáner para las fallas lógicas. Estas vulnerabilidades son más difíciles de detectar por los programadores, y hackers, porque tratan con la lógica de la aplicación web en lugar de su sintaxis. Un ejemplo fácil es; un escáner no es lo suficientemente inteligente para entender la diferencia entre dos valores de los parámetros indicado el rol de un usuario.

Esta vulnerabilidad nunca será encontrada por un escáner de vulnerabilidades automático, pero podría proporcionar acceso hacia la cuenta de cualquier usuario, esto se haría simplemente cambiando el parámetro con el nombre de usuario pertinente, y enviando sendas solicitudes.

Fuentes:

https://www.owasp.org/index.php/Testing_for_Weak_password_policy_(OTG-AUTHN-007)
https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OTG-INPVAL-005)
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OTG-INPVAL-002)
https://www.owasp.org/index.php/Forced_browsing
https://www.owasp.org/index.php/Testing_for_Session_Management
https://www.owasp.org/index.php/Testing_for_business_logic

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1