AWS - Relational Database (RDS) Enum

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

AWS RDS admite varios motores de base de datos relacionales ampliamente utilizados, incluidos MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server y Amazon Aurora, con compatibilidad tanto para MySQL como para PostgreSQL.

Las características clave de RDS incluyen:

  • La gestión de instancias de base de datos se simplifica.

  • Creación de replicas de lectura para mejorar el rendimiento de lectura.

  • Configuración de implementaciones en múltiples Zonas de Disponibilidad (AZ) para garantizar 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 sólido.

    • AWS CloudWatch para monitoreo y métricas completas.

    • AWS Key Management Service (KMS) para garantizar el cifrado en reposo.

Credenciales

Al crear el clúster de la base de datos, se puede configurar el nombre de usuario maestro (admin de forma predeterminada). 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 administre en AWS Secret Manager cifrada con una clave KMS.

Autenticación

Existen 3 tipos de opciones de autenticación, pero siempre se permite usar la contraseña maestra:

Acceso Público y VPC

Por defecto, no se otorga acceso público a las bases de datos, sin embargo, podría otorgarse. Por lo tanto, de forma predeterminada, 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 base de datos, es posible crear un Proxy de RDS que mejora la escalabilidad y disponibilidad del clúster de la base de datos.

Además, también se puede modificar el puerto de la base de datos.

Cifrado

El cifrado está habilitado de forma predeterminada utilizando una clave administrada por AWS (se podría elegir un CMK en su lugar).

Al habilitar el cifrado, estás activando el cifrado en reposo para tu almacenamiento, instantáneas, replicas de lectura y tus copias de seguridad. Las claves para administrar este cifrado se pueden emitir utilizando KMS. No es posible agregar este nivel de cifrado después de que se haya creado tu base de datos. Debe hacerse durante su creación.

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

Cifrado de Datos Transparente (TDE)

Junto con las capacidades de cifrado inherentes a RDS a nivel de aplicación, RDS también admite mecanismos de cifrado adicionales a nivel de plataforma para proteger los datos en reposo. Esto incluye Cifrado de Datos Transparente (TDE) para Oracle y SQL Server. Sin embargo, es crucial tener en cuenta que si bien TDE mejora la seguridad al cifrar 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 funciones, facilitando la gestión de la base de datos, incluidas las mejoras de seguridad.

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

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

    • Una vez asociado con un grupo de opciones, la opción de Cifrado Transparente de Datos de Oracle debe incluirse en ese grupo.

    • Es esencial reconocer que una vez que se agrega la opción de TDE a un grupo de opciones, se convierte en una característica permanente y no se puede eliminar.

  3. Modos de Cifrado de TDE:

    • TDE ofrece dos modos de cifrado distintos:

      • Cifrado de Espacio de Tabla TDE: Este modo cifra tablas completas, proporcionando un alcance más amplio de protección de datos.

      • Cifrado de Columna TDE: Este modo se centra en cifrar elementos específicos e individuales dentro de la base de datos, lo que permite un control más granular sobre qué datos se cifran.

Comprender estos requisitos previos y las complejidades operativas de TDE es crucial para implementar y gestionar eficazmente el cifrado dentro de RDS, garantizando 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

pageAWS - RDS Unauthenticated Enum

Escalada de privilegios

pageAWS - RDS Privesc

Post Explotación

pageAWS - RDS Post Exploitation

Persistencia

pageAWS - RDS Persistence

Inyección SQL

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

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización