• No se han encontrado resultados

9. Fase 4: Explotación de las vulnerabilidades

9.2. Explotación sobre Base de Datos

En lo referente a seguridad a las bases de datos, existen numerosas cuestiones que pueden llevar a vulnerabilidades explotables por atacantes. Algunos ejemplos de esto pueden ser los siguientes:

- Privilegios excesivos: Cuando a un usuario se le entregan privilegios de la base de datos que excedan los requerimientos de su puesto de trabajo, el riesgo que se crea puede ser innecesario.

- Abuso de privilegios: Muchos de los usuarios pueden llegara a abusar de los privilegios de acceso de datos legítimos para fines no autorizados. Por ejemplo: suministrar información confidencial de un cliente, sustraer información de la compañía para su propio lucro.

- Elevación de privilegios no autorizados: Los atacantes pueden aprovechar las vulnerabilidades en el software de gestión en la base de datos para convertir los privilegios de acceso de bajo nivel en acceso de alto nivel. Por ejemplo, sin seguridad de bases de datos, un atacante podría aprovechar una vulnerabilidad de desbordamiento de búfer para obtener privilegios administrativos.

- Vulnerabilidades de la plataforma : Las vulnerabilidades en los sistemas operativos pueden conducir al acceso no autorizado a datos y a la corrupción de los mismos. Las herramientas de IPS son una buena manera de identificar y / o bloquear ataques diseñados para aprovechar las vulnerabilidades de la plataforma de base de datos. - Inyección de SQL : La mayoría de las aplicaciones web desarrolladas hoy en día hacen

uso de una base de datos para ofrecer páginas dinámicas y almacenar información tanto de los usuarios como de la propia herramienta, el uso de este tipo de lenguaje ha traído consigo la aparición de numerosas vulnerabilidades. Los Ataques de inyección SQL implican a un usuario que se aprovecha de vulnerabilidades en aplicaciones web y procedimientos almacenados para proceder a enviar consultas de bases de datos no autorizadas, a menudo con privilegios elevados.

- Denegación de Servicio : En internet, un ataque de denegación de servicio (DDOS) es el que se realiza cuando una cantidad considerable de sistemas atacan a un objetivo único, provocando que el servicio no de más respuesta. Las técnicas más comunes de

DDOS incluyen desbordamientos de búfer, corrupción de datos, la inundación de la red y el consumo de recursos.

- Vulnerabilidades en los protocolos de las bases de datos: Existe una constante preocupación por la seguridad de la base de datos: Muchas veces la seguridad se ve afectada por la configuración de los procesos de conexión. Las vulnerabilidades en los protocolos de bases de datos pueden permitir el acceso no autorizado a datos, la corrupción o la disponibilidad. Por ejemplo, SQL Slammer Worm se aprovecha de una vulnerabilidad de protocolo de Microsoft SQL Server para ejecutar código de ataque en los servidores de base de datos destino.

- La exposición de los datos de backup : El robo de información y la filtración de datos confidenciales son noticias del día a día, Algunos ataques recientes de alto perfil han involucrado el robo de cintas de backup de base de datos y discos duros. Es importante que todas las copias de seguridad sean cifradas. De hecho, algunos proveedores han sugerido que los futuros productos DBMS no deberían admitir la creación de copias de seguridad sin cifrar. El cifrado de base de datos en línea es un pobre sustituto de controles granulares de privilegios según expertos de seguridad de base de datos.

- Autenticación débil: La autenticación basada en contraseña es probablemente una de las funciones más importantes que se usan todos los días, sin embargo no se ha evolucionado mucho desde los primeros sistemas informáticos de usuarios múltiples, incluso cuando se desarrollan métodos más seguros. Los esquemas de autenticación débiles permiten a los atacantes asumir la identidad de los usuarios de bases de datos legítimos. Algunas de las estrategias de ataque a la autenticación incluyen la fuerza bruta, la ingeniería social, phishing, etc.

Partiendo de esta última vulnerabilidad comenzará el siguiente caso de estudio. Se ha detectado que en el puerto 5432 del host 10.254.1.252 hay un servicio que expone una conexión a una base de datos PostgreSQL. Por lo que se intentará descubrir si hay algún usuario mal configurado, lo que en este caso significa que no tiene ninguna contraseña o tiene una contraseña de fábrica. De esta forma con solo saber su nombre se podrá acceder a dicha base.

Haciendo uso de Metasploit, lo primero que se realizará es indagar sobre la existencia de algún módulo que se encargue de intentar varios casos de autenticaciones en PostgreSQL. Esta tarea se realiza mediante la invocación del comando search, el cual realiza una búsqueda en la base de datos de módulos del framework.

Estos módulos son agrupados en las siguientes subcategorías:

- Módulo Auxiliary: Permite la interacción del framework con herramientas externas como pueden ser escáneres de vulnerabilidades, sniffers, etc.

- Módulo Encoders: Proporciona algoritmos para codificar y ofuscar los

payloads utilizados una vez que un exploit resultó exitoso.

- Módulo Exploit: Aquí es donde se encuentran todos los exploitsdisponibles en el framework.

- Módulo Payloads: Proporciona gran cantidad de códigos “maliciosos” que se podrá ejecutar una vez haya tenido éxito un exploit.

- Módulo Post: Proporciona funcionalidades para la fase de Post Explotación. - Módulo Nops: Permite realizar y/u obtener operacionesnop para mantener la

consistencia en el tamaño de los payloads.

Dentro de la consola de Metasploit (msfconsole), ingresando el comando search postgresql, se obtiene la lista de módulos para PostgreSQL. Entre ellas se puede encontrar, dentro del módulo Auxiliary, el scriptpostgres_login.

En la figura 9-11, se ingresa el comando use seguido de la ruta completa a dicho script con el fin de activar el uso del mismo. Continuado a esto se utiliza el comando show options para visualizar los distintos parámetros delscriptjunto a información adicional como la descripción, si son requeridos u opcionales, etc.

Figura 9-11: Opciones para el exploit postgres_login contenido en Metasploit

Una vez analizados los parámetros, se puede concluir que solo se requiere especificar el host al que se quiere examinar, lo que en este caso será el mencionado al comienzo de esta sección (10.254.1.252).

La forma de asignarle un valor a un parámetro es mediante el formato:

set [nombre del parámetro] [valor del parámetro].

En forma adicional también se le debe indicar al exploit que se detenga una vez conseguido un usuario con quien autenticarse. Dicha tarea se hace configurando el parámetro STOP_ON_SUCCESS. Al terminar de declarar toda la información necesaria, se debe ejecutar el script mediante el método run.

En los resultados se encontró que el usuario postgresno cuenta de contraseña por lo tanto es posible conectarse directamente a la base con él.

Para finalizar con la explotación de esta vulnerabilidad se ingresará, exitosamente, a la base de datos utilizando el usuario encontrado. Esto se realiza ingresando el servicio de conexión de PostgreSQL, el cual tiene el formato “psql -h [host] -p [puerto] -U [usuario]“.

Figura 9-13: Conexión a base de datos postgreSQL seguido de comando para listar sus esquemas

Una vez que se ha establecido la conexión con la base, se puede ingresar el comando

\l el cual desplegará el listado de los diferentes esquemas de base de datos que están presentes en el servidor. Como se puede observar en la imagen superior existen 28 esquemas, los cuales pueden llegar a contener información sensible e importante. Un ejemplo de estos esquemas pueden ser comedor, telefonía e infraestructura. Por lo tanto, se procederá a conectarse a uno de ellos mediante el comando: \connect [nombre base de datos].

Una vez realizada esta conexión se puede hacer uso del comando \dtpara obtener el listado de todas las tablas declaradas dentro de dicho esquema. Para comedor el listado encontrado fue el siguiente:

Figura 9-15: Listado de tablas definidas en el esquema comedor

Luego de haber obtenido conocimiento sobre los distintos esquemas, el siguiente paso es averiguar con qué privilegios consta el usuario que se está utilizando, y adicionalmente que otros usuarios hay configurados en dicha base. En este caso se utilizará el comando \du, el cual mostrará el listado con toda la información requerida.

Figura 9-16: Listado de usuarios junto a sus roles

Como se puede observar en la imagen superior, el usuario postgres es un super usuario, con los siguientes atributos:

- Superuser: Este rol permite sobrescribir todas las restricciones dentro de la base de datos, a su vez también le otorga la habilidad de crear nuevos usuarios. Un atacante puede hacer uso de este rol para generar nuevos usuarios y escalar privilegios.

- Create role: Aquí se hace referencia a la habilidad de crear nuevos roles y modificar y eliminar roles definidos con anterioridad. Un atacante puede utilizar este rol para quitar permisos a roles existentes y de esta forma impedir que otros usuarios tomen acciones resolutivas en caso de que un ataque sea llevado a cabo.

- Create DB: Otro permiso peligroso el cual otorga acceso a acciones determinantes sobre la estructura de las bases de datos, pudiendo generar nuevos esquemas o, de manera mucho más dañina, eliminar esquemas existentes. Un atacante puede utilizar este rol para eliminar bases de datos y de esta forma vulnerar la integridad total de la información.

- Replication: Por último el usuario tiene este rol, el cual le permite generar réplicas de las bases de datos, de esta forma puede generar copias y exportarlas a otras conexiones. Un atacante puede hacer uso de este rol para robar toda la información existente.

Si se vuelve a hacer mención de las vulnerabilidades más comunes en las bases de datos descritas al comienzo, aquí se está frente a unos privilegios excesivos.