¿Qué tipo de ataques hacen que un atacante solo pueda filtrar la base de datos de un sitio?

5

De las revelaciones públicas que he visto en sitios recientemente comprometidos, parece común que solo se filtre la base de datos, en lugar del código de la aplicación, o en lugar de una toma de control completa. ¿Esto se debe a que hay una clase de ataques comunes que están limitados al acceso a bases de datos de solo lectura?

    
pregunta jl6 10.03.2013 - 10:30
fuente

4 respuestas

11

Los primeros pocos que vienen a la mente son:

  1. Un ataque de inyección SQL en el que el usuario de la base de datos en cuestión solo tiene el privilegio SELECT.
  2. Un compromiso de las copias de seguridad de la base de datos primaria o las copias de seguridad de la base de datos externa. Si bien estos no son de solo lectura , hay pocas posibilidades de aumentar el compromiso escribiendo a las copias de seguridad.
  3. Un compromiso de una cuenta de shell en un servidor de base de datos. Aunque podría usar privilegios de raíz en un cuadro de base de datos para obtener una cuenta de usuario en la propia base de datos, esto probablemente sería una acción ruidosa que haría notar el compromiso. Aún puede copiar todo el contenido de la base de datos sin que se note.

También es completamente posible que los atacantes en las filtraciones de las que hablabas tuvieran privilegios completos o al menos más privilegios que solo de solo lectura, pero optaron por no usarlos. O los usaron pero ese uso aún no se ha detectado. O que tengan el código completo de la aplicación, pero decidieron no filtrarlo.

Un pensamiento interesante que acabo de tener al escribir esto sobre la prevención 1. al reducir la superficie de ataque es tener una cuenta de usuario de base de datos separada que solo tenga acceso a la tabla de credenciales y su usuario normal de solo lectura no tenga acceso a esta mesa De esa manera, solo una inyección de SQL en el formulario de inicio de sesión puede comprometer sus hashes de contraseña. Cualquier inyección de SQL en otra parte de la aplicación web no puede ver los hashes de contraseña (o cualquier otra información confidencial que tenga).

    
respondido por el Ladadadada 10.03.2013 - 10:49
fuente
2

La base de datos es la mina de oro, por eso filtrar los datos significa todas las cosas malas. El código fuente de la aplicación es importante en algunos casos, pero si observa la arquitectura de las aplicaciones modernas, la mayoría de los datos provienen de la base de datos back-end. Credenciales, PII, números de tarjetas de crédito, datos financieros y comerciales, casi todo lo que desea proteger está en la base de datos.

Comprometer al servidor (como obtener el shell) solo importa en caso de ataques de bot para que la red de bot se expanda. Los ataques dirigidos son siempre para los datos. Por lo tanto, comprometer la base de datos significa lograr el objetivo.

En lo que respecta a sus "ataques de comando", la mayoría de los sitios web están comprometidos a través de la inyección de SQL que ejecuta directamente las consultas de los atacantes en la base de datos. La base de datos de solo lectura es lo mínimo que se obtiene en la inyección de SQL. SQLi también puede comprometer totalmente la máquina al cargar el código de shell a través de la directiva "INTO DUMPFILE" y estos llaman al shell a través de la aplicación web, lo que da como resultado un shell interactivo completo a través del navegador.

Por lo tanto, la pérdida de datos la mayoría de las veces alcanza el objetivo, por eso los atacantes se detienen allí. De lo contrario, la inyección de SQL también ofrece muchas otras vías de ataque.

    
respondido por el void_in 10.03.2013 - 10:49
fuente
1

Supongo que si encuentran una inyección SQL y el usuario que usa el sitio web para consultar la base de datos solo tiene acceso de lectura, el resultado sería que solo puede hacer un ataque de inyección de SQL de solo lectura. Pero no creo que exista una clase específica para ese tipo de ataques. En general, solo añadimos nombre del ataque

    
respondido por el Lucas Kauffman 10.03.2013 - 10:49
fuente
0

Si la base de datos es la única parte comprometida de la aplicación web, es casi siempre una Inyección SQL , que abusa de una función de la aplicación (por ejemplo, un formulario de búsqueda) para extraer datos arbitrarios del subyacente base de datos.

Una pérdida en la base de datos también podría ser causada por un ataque interno , realizado por un empleado que tenía suficientes privilegios para acceder a la base de datos.

También se pueden encontrar volcados de bases de datos parciales y completos a través de Google Hacking , que utiliza motores de búsqueda para descubrir archivos confidenciales que se indexaron.

Por último, incluiría errores de aplicación que podrían revelar datos de la base de datos si las excepciones no se manejan correctamente.

    
respondido por el Gurzo 10.03.2013 - 12:08
fuente

Lea otras preguntas en las etiquetas