¿Es posible obtener datos del servidor de la base de datos si está en el servidor de aplicaciones?

0

Por ejemplo, está atacando una aplicación que emplea dos servidores diferentes: un servidor de aplicaciones y un servidor de base de datos. Ha descubierto una vulnerabilidad que le permite ejecutar comandos de sistema operativo arbitrarios en el servidor de aplicaciones. ¿Cómo puede aprovechar esta vulnerabilidad para recuperar datos confidenciales de aplicaciones almacenados en la base de datos?

Mi opinión es que si puedo ejecutar comandos arbitrarios del sistema operativo, intentaré encontrar las credenciales de la base de datos en el archivo de configuración y luego iniciaré sesión. (La respuesta indirecta es NO).

    
pregunta Utkarsh Agrawal 22.08.2018 - 07:06
fuente

1 respuesta

1

En resumen: Posiblemente

Por un lado, sí, este es un riesgo muy real . Con muchas instalaciones de aplicaciones ordinarias y despliegues de bases de datos, esta vulnerabilidad le permitirá acceder a los datos.

Por otra parte, no, un atacante puede ser bloqueado incluso en esta etapa . Existen varias técnicas para mitigar este riesgo. Por ejemplo:

  1. Privilegio limitado en SO . Los comandos arbitrarios que el atacante está ejecutando en el servidor de aplicaciones deben ejecutarse con las credenciales de un usuario particular; Si la cuenta de usuario se ha configurado de acuerdo con el Principle of Least Privilege , es posible que la cuenta de usuario no tenga la autoridad para ejecutar esas órdenes arbitrarias. Idealmente, la cuenta de usuario tendrá permiso para ejecutar la aplicación, pero no hará nada más.
    Nota: SELinux es una técnica poderosa para limitar aún más el acceso a los recursos del sistema operativo.

  2. Acceso limitado a DB . Incluso si un atacante descubre las credenciales de la base de datos, puede que no sean de mucha utilidad. La base de datos puede configurarse de modo que estas credenciales solo sean válidas para esa aplicación; por lo tanto, no pueden utilizarse para conectarse a la base de datos a través de ninguna otra herramienta. O bien, la base de datos puede configurarse de modo que estas credenciales solo sean válidas desde esta dirección de cliente; por lo tanto, todas las conexiones de la base de datos del atacante deben ser canalizadas a través del servidor de la base de datos, en lugar de hacerlo desde el propio sistema del atacante.

  3. No hay credenciales de base de datos almacenadas . Una aplicación puede diseñarse para que el usuario ingrese sus credenciales al iniciar sesión, por ejemplo, y éstas se utilicen para acceder a la base de datos. En esta situación, un atacante en el servidor de aplicaciones no pudo conectarse a la base de datos, sin importar cuánto control de nivel de sistema operativo tengan.

  4. Las credenciales de la base de datos se almacenan en otra parte . Una aplicación puede configurarse de modo que obtenga las credenciales de la base de datos de un servicio separado en tiempo de ejecución; este servicio separado puede no permitir conexiones excepto desde la propia aplicación.

Nota adicional: estas técnicas no son exclusivas, por lo que combinarlas puede ser una forma poderosa de limitar el acceso de un atacante. Sin embargo, cada una de estas técnicas requiere una configuración sofisticada no predeterminada, y es probable que una implementación ingenua se pierda todas y cada una de ellas.

    
respondido por el Vince Bowdren 23.08.2018 - 10:06
fuente

Lea otras preguntas en las etiquetas