🤫Information disclosure vulnerabilities
Information disclosure
Information disclosure o en español, Divulgación de información, también conocido como information leakage o fuga de información, se le denomina a la acción de un sitio web de revelar información sensible de manera in intencionada a sus usuarios. Dependiendo el escenario, esta información puede ser usada para vulnerar el sitio o revelar información sensible de los usuarios. La información catalogada como sensible incluye:
Datos sobre otros usuarios, como usernames o información financiera
Datos sensibles sobre el negocio o datos comerciales sensibles
Detalles técnicos sobre el sitio web y su infraestructura Dicha información puede ser de baja relevancia pero con potencial de ser usada para escalar en un ataque más complejo. Una de las formas más comunes de lograr observar información sensible no intencionada de mostrar puede ser el interactuar de forma no esperada con el sitio o directamente de una forma mal intencionada. Se sugiere tener especial atención en las respuestas otorgadas por el sitio, esperando comportamientos fuera de lo esperado que contengan información primordial para seguir buscando, o directamente los datos sensibles buscados.
Ejemplos de information disclosure
Ejemplos:
Revelación de datos del sistema como usernames, passwords, access keys, encription keys, etc.
Exponer código fuente, archivos de configuración u otros detalles internos de la aplicación
Divulgación de datos que sean de ayuda para un atacante
Filtrado ineficiente de entradas y salidas de texto o archivos
Insuficientes revisiones de autorización
Falla para manejar propiamente excepciones y errores
Filtrado de datos de practicas de seguridad
Malas configuraciones o componentes de software desactualizado o vulnerables
Revelar nombres de directorios ocultos, su estructura y su contenido vía archivos robots.txt o listado de directorios
Proveer acceso a código fuente vía respaldos temporales
Mención explicita a nombres de bases de datos, tablas o columnas en mensajes de error
Exposición innecesaria de información sensible como detalles de tarjetas de crédito
Exposición explicita de API keys, direcciones IP, credenciales de bases de datos y demás dentro del código fuente
Revelación de información que nos puede llevar a inferir o suponer la existencia o ausencia de recursos, usernames y demás por medio de sutiles diferencias en el comportamiento de la aplicación
Causas
La divulgación de datos sensibles ocurre de una gran cantidad de formas, pero estas pueden ser organizadas como
Fallo en remover contenido interno para el publico Por ejemplo, comentarios realizados por desarrolladores que son visibles para los usuarios en el ambiente de producción
Configuraciones inseguras de el sitio web y tecnologías relacionadas Fallando en des-habilitar herramientas de depuración o funciones de diagnostico que pueden proveer a los atacantes herramientas útiles para obtener información sensible. Configuraciones por defecto también pueden dejar vulnerable el sitio web por ejemplo mostrando mensajes de error muy informativos
Diseño y comportamiento defectuoso de la aplicación Si un sitio web retorna respuestas distintas cuando diferentes estados de error ocurren, esto puede también permitir a los atacantes enumerar datos sensibles como credenciales de usuario válidas
Impacto en el negocio
La relevancia para un negocio en evadir tener este tipo de vulnerabilidad se basa en el impacto negativo que puede tener para un negoció, potencialmente impactando en Perdidas financieras, Daño a la reputación, Perturbación del negoció, Violaciones de incumplimiento.
Perdidas financieras
Exposición de datos sensibles como secretos comerciales, propiedad intelectual o información del consumidor que puede directamente encabezar perdidas económicas y generar desventaja competitiva
Penalidades por violación a la privacidad de la información en leyes como la GDPR o HIPPA
Costos de respuesta a incidentes de seguridad, notificaciones al consumidor, cuotas legales, etc
Daño a la reputación
Perdidas de confianza por parte del consumidor que desemboquen en perdidas de clientes o en dificultades para atraer nuevos clientes
Daño a la reputación de la marca y percepción pública de las prácticas de seguridad de la compañía
Atención negativa de los medios de comunicación en torno a el filtrado de información
Perturbación del negocio
Que la información divulgada fuerce al negocio a la inactividad por la respuesta al incidente
Dejar fuera de función aplicaciones críticas y servicios mientras la vulnerabilidad es remediada
Perdidas de productividad tratando con el incidente de seguridad
Violaciones de incumplimiento
Filtración de datos regulados como formas de pago e historiales de salud que pueden resultar en penalidades de incumplimiento
Potenciales auditorias gubernamentales e incremento en prácticas de seguridad
Explotación
Es indispensable para el investigador evitar la vision de tuner durante las pruebas. En otras palabras, es importante evitar enfocarse de más en una vulnerabilidad particular. La información sensible puede filtrarse en todo tipo de lugares, puedes encontrarte con información sensible probando algo más, como puede pasar durante pruebas en otro tipo de vulnerabilidades. Una habilidad clave es ser capaz de reconocer información relevante cuando sea y donde sea que vayas.
Herramientas y técnicas
Fuzzing
En el caso de que identifiques parámetros interesantes, puedes tratar de mandar tipos de datos no esperados y strings siguiendo preferentemente parámetros específicos para el objetivo o con parámetros basados en resultados previos, en conjunto con el fuzzing. Pon suma atención; por medio de las respuestas algunas veces revelan de forma explicita información interesante, también pueden dar pistas del comportamiento de la aplicación. Esto puede estar en una sutil diferencia de tiempo de respuesta . Aún si el contenido de un error no revela nada, el hecho es que algunas veces el encontrar un caso de error en lugar de otro es una información útil en sí misma. Existe la posibilidad de automatizar en mayor medida este proceso usando herramientas como Burp Intruder. Esto provee varios beneficios entre los que destacan:
Agregar un payload posicional a un parámetro y usar listas de palabras previamente hechas o fuzz strings para probar un alto volumen de diferentes entradas en una rápida sucesión.
Fácil identificación de diferencias en respuestas por comparación de códigos de estado HTTP, tiempos de respuesta, longitud de respuesta, entre otros.
Uso de reglas de coincidencia usando herramientas como grep para identificar prontamente palabras clave, como error, valid, SELECT, SQL, entre otras.
Aplicar reglas de extracción con grep para obtener y comparar contenido de elementos interesantes entre respuestas Es posible también usar la extensión Logger++, disponible en la BApp store. En adición a peticiones de logging, y respuestas de todas las herramientas de Burpsuite. Permitiendo definir avanzados filtros para remarcar entradas de interés.
Burp Scanner (No disponible en version comunitaria)
Provee un scanner en vivo para auditar elementos por medio de tu buscador, o tu puedes agendar escaneos automáticos para rastrear y auditar el sitio objetivo por tu cuenta. Ambos métodos marcarán de forma automática algunas vulnerabilidades de divulgación de la información por ti.
Burp engagement tools
Burp provee varias herramientas que puedes usar para encontrar información interesante en el sitio web objetivo de forma más sencilla. Puedes acceder a las herramientas desde el menú de contexto haciendo click en cualquier mensaje HTTP, entrada tipo Burp Proxy, o elemento en el site map e ir a Engagement tools. Las siguientes herramientas son particularmente útiles en este contexto.
Search Puedes usar esta herramienta para revisar cualquier expresión con el elemento seleccionado. Puedes refinar los resultados usando varias opciones de búsqueda avanzadas, como regex ó negative search. Esto es útil para un rápido descubrimiento de ocurrencias ó en su defecto, abstinencias de palabras clave en el elemento de interés
Find comments Puedes usar esta herramienta para extraer de forma rápida cualquier comentario dejado por un desarrollador en el elemento seleccionado. Esto también provee pestañas para acceder de manera instantánea al ciclo de respuesta/petición HTTP en cada uno donde se encontró.
Discover content Puedes usar esta herramienta para identificar contenido adicional y funcionalidad que no es enlazada desde el contenido visible del sitio web. Este caso puede ser útil para encontrar directorios adicionales y archivos que no necesariamente aparecen en el site map de forma automática.
Ingeniería de respuestas informativas
Los mensajes de error demasiado informativos algunas veces pueden divulgar información interesante mientras tú vas sobre tu flujo de trabajo habitual. Sin embargo, mediante el estudio en la manera de que los mensajes de error cambian según tu entrada, puedes tomar esto un paso más allá. En algunos casos, tu podrás manipular el sitio web para extraer de forma arbitraria información por un mensaje de error. Hay numerosos métodos para hacer esto, dependiendo del escenario particular en el que te encuentres. Un ejemplo común es hacer que la lógica de ta aplicación intente una acción invalidad en un elemento específico de información. Por ejemplo, enviando un valor inválido a un parámetro puede dar lugar a un mensaje de seguimiento del error o una respuesta de depuración que contiene información interesante.
Prevención
Dada la naturaleza de la vulnerabilidad y sus múltiples formas de ser expuesta, puede resultar algo complejo el abarcar en su totalidad las formas de prevención. Algunas de las prácticas generales que se pueden seguir para minimizar el riesgo de este tipo de vulnerabilidades son
Tener certeza de que todos los involucrados en el desarrollo del sitio están completamente advertidos de cual tipo de información es considerada sensible. Algunas veces aparenta ser información inofensiva pero es información que puede ser de mayor utilidad para un atacante de lo que aparenta
Auditar cualquier código que potencialmente divulgue información sensible como parte de las actividades del QA o proceso de construcción. Esto puede ser relativamente fácil de automatizar para algunas tareas
Uso de mensajes de error genéricos en la mayor medida que sea posible, así los atacantes no son provistos de información que otorgue pistas sobre el comportamiento de la aplicación de forma innecesaria
Revisión doble de que cualquier herramienta de diagnostico o depuración está des-habilitada en el entorno productivo
Asegura el completo entendimiento de las configuraciones e implicaciones de seguridad de cualquier tecnología de terceros que implemente. Toma el tiempo para investigar cualquier función no deseable y las configuraciones que actualmente necesitas
Refrences
https://portswigger.net/web-security/information-disclosure
https://www.hackerone.com/vulnerability-management/information-disclosure-deep-dive
Last updated