AWS - Relational Database (RDS) Enum

Apoya a HackTricks

Información Básica

El Servicio de Base de Datos Relacional (RDS) ofrecido por AWS está diseñado para simplificar el despliegue, operación y escalado de una base de datos relacional en la nube. Este servicio ofrece las ventajas de eficiencia de costos y escalabilidad mientras automatiza tareas laboriosas como la provisión de hardware, configuración de bases de datos, parches y copias de seguridad.

AWS RDS soporta varios motores de bases de datos relacionales ampliamente utilizados, incluyendo MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server y Amazon Aurora, con compatibilidad para MySQL y PostgreSQL.

Las características clave de RDS incluyen:

  • La gestión de instancias de base de datos es simplificada.

  • Creación de réplicas de lectura para mejorar el rendimiento de lectura.

  • Configuración de despliegues en múltiples Zonas de Disponibilidad (AZ) para asegurar alta disponibilidad y mecanismos de conmutación por error.

  • Integración con otros servicios de AWS, como:

  • AWS Identity and Access Management (IAM) para un control de acceso robusto.

  • AWS CloudWatch para monitoreo y métricas completas.

  • AWS Key Management Service (KMS) para asegurar la encriptación en reposo.

Credenciales

Al crear el clúster de DB, el nombre de usuario maestro puede ser configurado (admin por defecto). Para generar la contraseña de este usuario puedes:

  • Indicar una contraseña tú mismo

  • Decirle a RDS que la genere automáticamente

  • Decirle a RDS que la gestione en AWS Secret Manager encriptada con una clave KMS

Autenticación

Hay 3 tipos de opciones de autenticación, pero usar la contraseña maestra siempre está permitido:

Acceso Público y VPC

Por defecto, no se concede acceso público a las bases de datos, sin embargo, podría concederse. Por lo tanto, por defecto, solo las máquinas de la misma VPC podrán acceder si el grupo de seguridad seleccionado (almacenado en EC2 SG) lo permite.

En lugar de exponer una instancia de DB, es posible crear un RDS Proxy que mejora la escalabilidad y disponibilidad del clúster de DB.

Además, el puerto de la base de datos puede ser modificado también.

Encriptación

La encriptación está habilitada por defecto usando una clave gestionada por AWS (se podría elegir una CMK en su lugar).

Al habilitar tu encriptación, estás habilitando la encriptación en reposo para tu almacenamiento, instantáneas, réplicas de lectura y tus copias de seguridad. Las claves para gestionar esta encriptación pueden ser emitidas usando KMS. No es posible añadir este nivel de encriptación después de que tu base de datos ha sido creada. Tiene que hacerse durante su creación.

Sin embargo, hay un método alternativo que te permite encriptar una base de datos no encriptada de la siguiente manera. Puedes crear una instantánea de tu base de datos no encriptada, crear una copia encriptada de esa instantánea, usar esa instantánea encriptada para crear una nueva base de datos y, finalmente, tu base de datos estaría encriptada.

Encriptación de Datos Transparente (TDE)

Junto con las capacidades de encriptación inherentes a RDS a nivel de aplicación, RDS también soporta mecanismos de encriptación adicionales a nivel de plataforma para salvaguardar los datos en reposo. Esto incluye Encriptación de Datos Transparente (TDE) para Oracle y SQL Server. Sin embargo, es crucial notar que aunque TDE mejora la seguridad al encriptar datos en reposo, también puede afectar el rendimiento de la base de datos. Este impacto en el rendimiento es especialmente notable cuando se utiliza en conjunto con funciones criptográficas de MySQL o funciones criptográficas de Microsoft Transact-SQL.

Para utilizar TDE, se requieren ciertos pasos preliminares:

  1. Asociación de Grupo de Opciones:

  • La base de datos debe estar asociada con un grupo de opciones. Los grupos de opciones sirven como contenedores para configuraciones y características, facilitando la gestión de bases de datos, incluyendo mejoras de seguridad.

  • Sin embargo, es importante notar que los grupos de opciones solo están disponibles para motores de bases de datos y versiones específicas.

  1. Inclusión de TDE en el Grupo de Opciones:

  • Una vez asociada con un grupo de opciones, la opción de Encriptación de Datos Transparente de Oracle necesita ser incluida en ese grupo.

  • Es esencial reconocer que una vez que la opción TDE se añade a un grupo de opciones, se convierte en un elemento permanente y no puede ser removido.

  1. Modos de Encriptación TDE:

  • TDE ofrece dos modos de encriptación distintos:

  • Encriptación de Tablespace TDE: Este modo encripta tablas enteras, proporcionando un alcance más amplio de protección de datos.

  • Encriptación de Columna TDE: Este modo se centra en encriptar elementos específicos e individuales dentro de la base de datos, permitiendo un control más granular sobre qué datos se encriptan.

Entender estos requisitos previos y las complejidades operativas de TDE es crucial para implementar y gestionar efectivamente la encriptación dentro de RDS, asegurando tanto la seguridad de los datos como el cumplimiento de los estándares necesarios.

Enumeración

# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>

## Cluster snapshots
aws rds describe-db-cluster-snapshots

# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups

## Find automated backups
aws rds describe-db-instance-automated-backups

## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public
## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a

# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public

# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets

## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately

Acceso No Autenticado

AWS - RDS Unauthenticated Enum

Escalación de Privilegios

AWS - RDS Privesc

Post Explotación

AWS - RDS Post Exploitation

Persistencia

AWS - RDS Persistence

Inyección SQL

Hay formas de acceder a los datos de DynamoDB con sintaxis SQL, por lo tanto, las típicas inyecciones SQL también son posibles.

Apoya a HackTricks

Last updated