¿Qué se puede hacer con la contraseña de MySQL?

0

Digamos que hay un sitio web simple alojado en la web, basado en Flask + MySQL. La funcionalidad del sitio web es segura y no permite que se ejecuten consultas arbitrarias en la base de datos.

Sin embargo, digamos que alguien obtiene acceso no autorizado al nombre de usuario y la contraseña de la base de datos MySQL (es decir, los utilizados en el URI de la base de datos).

¿Esta información realmente les permitirá hacer algo?

    
pregunta N4v 21.05.2018 - 15:44
fuente

2 respuestas

1

Las credenciales de la base de datos filtrada podrían potencialmente dar a un atacante la capacidad de interactuar con la base de datos con los mismos privilegios que la aplicación web (suponiendo que creó una cuenta de privilegios bajos para que la aplicación web acceda a la base de datos con; no está utilizando "raíz", ¿verdad?). Esto significa que posiblemente podrían volcar todos los datos, o manipular y agregar entradas a voluntad.

Dicho esto, el atacante necesitaría una forma de conectarse realmente a la base de datos, para lo cual hay varias condiciones que deben cumplirse:

  1. El servicio MySQL está escuchando en una dirección pública (el valor predeterminado es solo localhost)
  2. El firewall del host (si está configurado) debe permitir el acceso de entrada al puerto MySQL
  3. La cuenta de usuario MySQL de destino debe configurarse para permitir la dirección IP de origen que usará el atacante, o todas las direcciones con un comodín (generalmente, solo se permite localhost, a menos que los hosts remotos también necesiten la base de datos)
  4. Una vez conectada, la cuenta de usuario debe tener permisos para leer, escribir o modificar, dependiendo de lo que el atacante esté tratando de hacer

Si se cumplen las 4 condiciones, es probable que un atacante haga algo , dependiendo de los privilegios de la cuenta. Sin embargo, algunas de esas condiciones son improbables y, a menudo, requieren que el administrador haga todo lo posible para realizar estos cambios, por lo que es improbable que se comprometan de esta manera.

Además, si un atacante logra obtener shell o comprometer otro servicio en el mismo host, es posible que pueda omitir 1-3 anteriores y conectarse a la base de datos en localhost.

    
respondido por el multithr3at3d 21.05.2018 - 18:10
fuente
3
  

La funcionalidad del sitio web es segura y no permite que se ejecuten consultas arbitrarias en la base de datos.

     

Sin embargo, digamos que alguien obtiene acceso no autorizado al nombre de usuario y la contraseña de la base de datos MySQL (es decir, los que se usan en el URI de la base de datos).

No estoy seguro de si esto es lo que estás insinuando, pero no es suficiente que la funcionalidad del sitio web tenga que ser segura: todo el servidor que ejecuta la base de datos MySQL también tiene que ser seguro. Su sitio web puede ser tan hermético como quiera, pero, en el caso extremo, si la base de datos MySQL backend se está ejecutando en una IP de acceso público, y al escuchar las solicitudes de manera global, ese nombre de usuario y contraseña le permitirán conectarse y ejecuta todas las consultas arbitrarias que quieras.

Al omitir lo anterior, otros aspectos, como la reutilización de contraseñas y suponiendo que todo está "completamente" asegurado y bloqueado, entonces sí, esas credenciales no tienen ningún uso específico. Al igual que casi todas las estrategias en este dominio, mantenerlas en secreto es agregar una capa de seguridad en caso de que se encuentren vulnerabilidades que hagan que esas credenciales sean útiles.

En la práctica, bloquear esas credenciales debería ser bastante fácil. Entonces, si un atacante tiene en sus manos en primer lugar, la implicación es que su configuración definitivamente no es no segura, y es probable que haya una gran cantidad de otras vulnerabilidades aún por descubrir.

    
respondido por el berry120 21.05.2018 - 16:09
fuente

Lea otras preguntas en las etiquetas