11 nov 2024

A05:2021 – Security misconfiguration

Introducción

Descripción de la vulnerabilidad 

Como continuación a esta serie de posts sobre las vulnerabilidades OWASP Top Ten, en este post se va a comentar sobre la vulnerabilidad A05:2021 - Security Misconfiguration o en castellano: Configuración incorrecta de ciberseguridad.

Esta vulnerabilidad hace referencia a configuraciones de ciberseguridad no implementadas o implementadas de manera incorrecta y puede manifestarse de diversas formas, desde la utilización de configuraciones predeterminadas o inseguras hasta la exposición innecesaria de información sensible o la habilitación de servicios innecesarios. 

Sucede cuando una aplicación o servidor no está configurado correctamente, lo que permite a un atacante aprovechar esta falta de configuración para acceder a datos sensibles, elevar privilegios y conseguir el control de la aplicación.

Impacto

Esta vulnerabilidad puede tener consecuencias devastadoras para una organización. 

Al explotar una configuración insegura, los atacantes pueden obtener acceso a información sensible, elevar privilegios en la aplicación, o incluso utilizar los recursos comprometidos para realizar ataques a terceros.

El impacto de esta vulnerabilidad se puede reflejar en los siguientes puntos:

  • Exposición de información sensible: Cuando un sistema no está configurado adecuadamente, puede permitir que un adversario acceda a datos sensibles, como credenciales de usuario, información personal o secretos comerciales.
  • Control del sistema: En algunos casos, una mala configuración puede otorgar a los atacantes la capacidad de tomar el control completo del sistema, lo que les permite modificar o destruir datos o utilizar los recursos del sistema para llevar a cabo otros ataques.
  • Compromiso de la disponibilidad del sistema: Un adversario puede aprovechar una configuración incorrecta para lanzar ataques de denegación de servicio (DoS) que interrumpan el funcionamiento normal de la aplicación o del servidor, lo que puede afectar a la disponibilidad de los servicios para los usuarios legítimos.
  • Uso del sistema como plataforma de ataque: Los sistemas comprometidos debido a una mala configuración de seguridad pueden ser utilizados por los atacantes como plataformas desde las cuales lanzar ataques a otros sistemas, lo que puede ampliar considerablemente el alcance del daño.

Ejemplos prácticos

Exposición de credenciales en el código fuente de la aplicación y elevación de privilegios

Uno de los ejemplos más comunes de esta vulnerabilidad es cuando una aplicación se despliega con configuraciones por defecto, contraseñas en el código de la aplicación usadas en la etapa de desarrollo o permisos a usuarios que son más amplios de lo necesario.

Para demostrar esto, se accede al laboratorio web de Zerolynx con un usuario sin privilegios, user1 en este caso.



Al acceder a la aplicación, se puede observar cómo se ha accedido al panel del usuario y sólo se tiene acceso a los items de este usuario, aunque no hay ninguno creado en este caso.


Al inspeccionar el código, se puede observar cómo debido a una mala configuración de seguridad, no se ha eliminado un comentario creado en la etapa de desarrollo, que ofrece las credenciales de administración:




Si ahora se usan estas credenciales, se puede acceder a la aplicación web como un usuario con privilegios de Administrador, como se muestra en las siguientes imágenes.




Exposición de la estructura de ficheros de la aplicación

Si el sistema muestra mensajes de error detallados o archivos de configuración por defecto, podría estar revelando información interna valiosa como versiones de software o rutas de archivos, cuya información permite a un atacante saber las versiones que usa el sistema y explotar las vulnerabilidades públicas existentes que afectan a estas versiones.

Si se accede a la dirección IP del servidor que da soporte al laboratorio, el cual se está usando para demostrar esta vulnerabilidad, se muestra la página por defecto de Apache debido a una mala configuración.


Si se accede a la ruta /ZVulnLabs/, como no ha sido configurado correctamente el servidor, se muestran todos los ficheros debido a que es vulnerable a Listado de Directorios, lo que da información de la estructura de directorios y de los ficheros que componen la aplicación:


Si se accede a la carpeta /ZVulnLabs/uploads/ se puede acceder directamente a los ficheros que han sido subidos a la aplicación web, además de obtener la versión del servidor Apache.

Compromiso de la disponibilidad debido a software vulnerable

La falta de actualización de las aplicaciones también es debido a una mala configuración, permitiendo a un atacante hacer uso de vulnerabilidades cuyos exploits han sido publicados, los cuales darían más facilidad a un adversario el comprometer la aplicación.

Teniendo lo anterior en cuenta, si se buscan vulnerabilidades para la versión de Apache/2.4.57 (Debian) Server, se confirma que esta versión tiene vulnerabilidades públicas asociadas, como el CVE-2023-43622:

Esta vulnerabilidad permite a un atacante iniciar una conexión HTTP con un tamaño de ventana de valor cero, lo que permitiría a un adversario una Denegación de Servicio o DoS. Además, tiene exploit público asociado, lo que para un atacante que quisiese comprometer la disponibilidad del servicio web, sería algo trivial el explotar esta vulnerabilidad.

Mitigaciones

Como mitigaciones de esta vulnerabilidad, OWASP recomienda las siguientes:
  • Un proceso de hardening repetible hace que sea rápido y fácil desplegar y que esté adecuadamente implementado. Los entornos de desarrollo, control de calidad y producción deben configurarse de forma idéntica, utilizando credenciales diferentes en cada uno de ellos.
  • Una plataforma mínima sin características, componentes, documentación y muestras innecesarias.
  • Revisar y actualizar las configuraciones adecuadas a todas las notas de seguridad, actualizaciones y parches como parte del proceso de gestión de parches.
  • El uso de una arquitectura de aplicaciones segmentada que proporcione una separación eficaz y segura entre los componentes de la aplicación.
  • Correcta implementación de las Cabeceras de Seguridad.
  • Implementación de procesos automáticos antes de desplegar a producción que aseguren la efectividad de las medidas adoptadas.

Conclusiones

La vulnerabilidad Security Misconfiguration sigue siendo una de las principales causas de brechas de seguridad en aplicaciones y sistemas. La complejidad inherente de las infraestructuras tecnológicas modernas hace que la configuración incorrecta sea un problema común, pero prevenible. 

Al implementar procesos de instalación seguros, automatizar la robustez de sistemas, mantener una plataforma mínima y aplicar una gestión adecuada de parches y actualizaciones, las organizaciones pueden reducir significativamente su exposición a esta vulnerabilidad.

Justo Martín, Analista de Ciberseguridad en Zerolynx.

4 nov 2024

A04:2021 - Insecure design - Information disclosure



Introducción

La divulgación de información es una vulnerabilidad de seguridad, cuya criticidad dependerá de lo sensible que sea la información obtenida. 

Se produce cuando una aplicación web expone inadvertidamente datos sensibles o confidenciales a usuarios no autorizados. Esta vulnerabilidad puede manifestarse de diversas formas, incluyendo la revelación de detalles técnicos del sistema, información de configuración, datos de usuarios, o incluso fragmentos de código fuente. 

Esta exposición no solo compromete la integridad y confidencialidad de la aplicación, sino que también puede proporcionar a potenciales atacantes información valiosa para planificar y ejecutar ataques más sofisticados contra el sistema.

Impacto

El impacto de la divulgación de información en la seguridad de una aplicación web puede ser significativo:

  • Exposición de datos sensibles: Puede revelar información confidencial como contraseñas, datos de usuarios o detalles de la infraestructura.
  • Facilitación de ataques más sofisticados: Los atacantes pueden utilizar la información obtenida para planificar y ejecutar ataques más precisos y efectivos.
  • Pérdida de confianza: Si los usuarios descubren que la aplicación es vulnerable, puede resultar en una pérdida de confianza y daño a la reputación de la organización.
  • Incumplimiento normativo: Dependiendo de la naturaleza de la información divulgada, puede llevar a violaciones de normativas de privacidad y seguridad de datos.
  • Compromiso de la integridad del sistema: La información revelada puede ser utilizada para comprometer la integridad y seguridad general del sistema.

Estos impactos subrayan la importancia de identificar y mitigar las vulnerabilidades de divulgación de información en aplicaciones web.

Ejemplos Prácticos

A continuación, se presentan algunos ejemplos prácticos de vulnerabilidades de divulgación de información en aplicaciones web. Estos casos ilustran cómo la información sensible puede ser expuesta inadvertidamente, proporcionando a los atacantes datos valiosos sobre la infraestructura y el funcionamiento interno de la aplicación.

Cada ejemplo incluye una descripción del escenario, el impacto potencial, y las medidas de mitigación recomendadas. Es importante comprender estos casos para mejorar la seguridad de las aplicaciones web y proteger la información sensible de la organización.

1. Mensajes de Error

Este caso específico se refiere a una técnica deliberada de provocar errores en una página web con un propósito estratégico. El objetivo principal de esta práctica es inducir al sistema a revelar información crucial sobre la versión del software que está siendo utilizado. 

Esta táctica, aunque aparentemente simple, puede proporcionar a un atacante datos valiosos sobre la infraestructura tecnológica subyacente de la aplicación web. Al forzar intencionalmente estos errores, un atacante busca explotar las respuestas del sistema para obtener detalles técnicos que normalmente estarían ocultos. 

Esta información puede incluir no solo la versión exacta del software, sino también otros detalles como el tipo de servidor web, el sistema operativo subyacente, o incluso fragmentos de código fuente. Todos estos elementos pueden ser utilizados posteriormente para planificar ataques más sofisticados y dirigidos.

Resumen

  • Se provoca un error deliberadamente en la aplicación web.
  • El mensaje de error generado revela cierta información. La información obtenida puede incluir versiones de software, rutas de archivos, o configuraciones del servidor.

Ejemplo

Existen múltiples formas de generar un error en una página web. En este caso, se va a explicar uno muy común que ocurre cuando a un parámetro que se espera que reciba un valor numérico INTEGER, se le envía un valor no numérico.

https://<victim_web>/product?productId=2

En este caso, se alterará el valor del parámetro productId para enviar un valor no numérico y así forzar un error:

https://<victim_web>/product?productId="


En la imagen, se puede observar que, de esta manera, es posible forzar un error y obtener la versión del servidor web del que se hace uso.


Mitigación

Para prevenir este tipo de vulnerabilidad, se recomienda:
  • Configurar adecuadamente los mensajes de error para que no revelen información sensible
  • Implementar manejo de errores personalizado que oculte detalles técnicos
  • Mantener el software y los sistemas actualizados para reducir las vulnerabilidades conocidas
  • Realizar pruebas de seguridad regulares para identificar y corregir posibles fugas de información

2. Archivos de instalación por defecto / Debug files

En este escenario, el objetivo es identificar y localizar archivos de instalación que se han dejado en su configuración predeterminada. Estos archivos pueden proporcionar información valiosa y potencialmente sensible acerca de las versiones específicas del software utilizado en la infraestructura del sistema. 
La presencia de estos archivos no solo puede revelar detalles técnicos cruciales, sino que también puede exponer vulnerabilidades conocidas asociadas con versiones particulares del software, lo que podría ser explotado por atacantes malintencionados para comprometer la seguridad del sistema.

Resumen

  • Se ejecuta una fase de reconocimiento, donde se buscan archivos y directorios mediante archivos como sitemap.xml o robots.txt, además de herramientas de crawling, o enumeración de directorios
  • EL archivo de depuración o el generado durante la instalación contiene cierta información sensible. La información obtenida puede incluir versiones de software, rutas de archivos, configuraciones del servidor, claves y tokens en texto claro

Ejemplo

En este caso, mediante la herramienta de enumeración de directorios dirsearch y el diccionario big.txt de SecList, ha sido posible enumerar el siguiente archivo.

dirsearch -u https://victim_web -w ~/Tools/SecLists/Discovery/Web-Content/big.txt



El archivo phpinfo.php es un script de diagnóstico comúnmente utilizado en servidores web con PHP. Este archivo, cuando se accede, muestra información detallada sobre la configuración del servidor PHP, incluyendo versiones de software, extensiones habilitadas y variables del sistema.


En este caso, se puede observar que, entre la información contenida en este archivo, se encuentra múltiple información sensible, a la cual es posible acceder sin una autenticación previa.

Tal y como podemos observar, dejar este archivo accesible en un entorno de producción puede representar un riesgo de seguridad significativo, ya que expone información sensible que podría ser aprovechada por atacantes malintencionados.

Mitigación

Para prevenir los riesgos asociados con archivos de instalación por defecto o de debugging se recomienda:
  • Eliminar o restringir el acceso a archivos de diagnóstico en entornos de producción
  • Implementar controles de acceso robustos para archivos sensibles
  • Utilizar firewalls de aplicaciones web (WAF) para bloquear el acceso a archivos potencialmente peligrosos
  • Realizar auditorías regulares de seguridad para identificar y eliminar archivos innecesarios
  • Configurar correctamente los permisos de archivos y directorios en el servidor web
  • Utilizar herramientas de escaneo de vulnerabilidades para detectar archivos expuestos
  • Implementar políticas de seguridad que prohíban la presencia de archivos de debugging en producción
  • Educar a los desarrolladores sobre los riesgos de dejar archivos de diagnóstico accesibles

3. Archivos Ocultos

En este escenario, el objetivo es identificar y localizar archivos ocultos que puedan contener información sensible o potencialmente peligrosa para la organización. Estos archivos, a menudo inadvertidamente expuestos, pueden representar un riesgo significativo para la seguridad de la empresa si son descubiertos y explotados por actores malintencionados. 

Aunque las técnicas de crawling y enumeración de directorios, mencionadas en ejemplos anteriores, podrían ser aplicables, este caso particular se centrará en métodos alternativos y más sutiles para descubrir estos recursos ocultos. Estas estrategias alternativas pueden incluir el análisis de respuestas del servidor, la inspección de código fuente, y la explotación de patrones de nomenclatura comunes, entre otros enfoques más sofisticados y menos intrusivos.

Resumen

  • Se ejecuta una fase de reconocimiento, donde se buscan archivos y directorios mediante archivos como sitemap.xml o robots.txt, además de herramientas de crawling, o enumeración de directorios.
  • Los archivos encontrados mediante estas técnicas pueden ir desde documentación interna, datos económicos, credenciales de usuarios, código fuente, etc.

Ejemplo

Para este ejemplo, se obtendrá información acerca de la estructura de archivos del aplicativo web, accediendo al archivo robots.txt.

El archivo robots.txt es un archivo de texto utilizado en sitios web para indicar a los robots de los motores de búsqueda qué páginas o secciones del sitio deben o no ser rastreadas e indexadas.

https://victim_web/robots.txt

Tras acceder al directorio de /backup, se puede observar en este ejemplo como hay un archivo con código fuente de la aplicación.




En este caso, se puede observar que en el archivo de backup se encuentra código fuente de la aplicación con información sensible como la cadena de conexión a una base de datos, donde se encuentra la contraseña. Además de una consulta a la base de datos donde se puede intuir una inyección SQL.

Mitigación

Para prevenir los riesgos asociados con archivos de instalación por defecto o de debugging se recomienda:
  • Identificar todos los archivos que se muestren desde la web
  • Eliminar o restringir el acceso a archivos con información crítica, como, por ejemplo, código fuente, credenciales…
  • Implementar controles de acceso robustos para archivos sensibles
  • Utilizar firewalls de aplicaciones web (WAF) para bloquear el acceso a archivos potencialmente peligrosos
  • Realizar auditorías regulares de seguridad para identificar y eliminar archivos innecesarios
  • Configurar correctamente los permisos de archivos y directorios en el servidor web
  • Utilizar herramientas de escaneo de vulnerabilidades para detectar archivos expuestos

Dimas Pastor, Analista de ciberseguridad en Grupo Zerolynx.