AWS - Base de Datos Relacional (RDS) - Enumeraci贸n

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Informaci贸n b谩sica

El Relational Database Service (RDS) ofrecido por AWS est谩 dise帽ado para simplificar el despliegue, la operaci贸n y el escalado de una base de datos relacional en la nube. Este servicio ofrece las ventajas de eficiencia de costos y escalabilidad mientras automatiza tareas que consumen mucho trabajo manual como el aprovisionamiento de hardware, la configuraci贸n de la base de datos, el parcheo y las copias de seguridad.

AWS RDS soporta varios motores de bases de datos relacionales ampliamente usados 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:

  • Gesti贸n de instancias de bases de datos simplificada.
  • Creaci贸n de read replicas para mejorar el rendimiento de lectura.
  • Configuraci贸n de implementaciones multi-Availability Zone (AZ) para asegurar alta disponibilidad y mecanismos de failover.
  • Integraci贸n con otros servicios de AWS, tales como:
  • AWS Identity and Access Management (IAM) para un control de acceso robusto.
  • AWS CloudWatch para monitorizaci贸n y m茅tricas completas.
  • AWS Key Management Service (KMS) para asegurar el cifrado en reposo.

Credenciales

Al crear el DB cluster el username maestro puede configurarse (admin por defecto). Para generar la contrase帽a de este usuario puedes:

  • Indicar una password t煤 mismo
  • Decirle a RDS que la auto genere
  • 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 master password siempre est谩 permitido:

Acceso p煤blico & 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 m谩quinas desde la misma VPC podr谩n acceder si el security group seleccionado (est谩n almacenados en EC2 SG) lo permite.

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

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).

Al habilitar la encriptaci贸n, est谩s habilitando encriptaci贸n en reposo para tu almacenamiento, snapshots, read replicas y tus back-ups. 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 haya sido creada. Tiene que hacerse durante su creaci贸n.

Sin embargo, existe una soluci贸n alternativa que te permite encriptar una base de datos no encriptada de la siguiente manera. Puedes crear un snapshot de tu base de datos no encriptada, crear una copia encriptada de ese snapshot, usar ese snapshot encriptado para crear una nueva base de datos y, finalmente, tu base de datos quedar铆a encriptada.

Transparent Data Encryption (TDE)

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

Para utilizar TDE, se requieren ciertos pasos preliminares:

  1. Asociaci贸n a Option Group:
  • La base de datos debe estar asociada con un option group. Los option groups sirven como contenedores para configuraciones y caracter铆sticas, facilitando la gesti贸n de la base de datos, incluyendo mejoras de seguridad.
  • Sin embargo, es importante notar que los option groups solo est谩n disponibles para motores y versiones de base de datos espec铆ficos.
  1. Inclusi贸n de TDE en el Option Group:
  • Una vez asociada con un option group, la opci贸n Oracle Transparent Data Encryption necesita ser incluida en ese grupo.
  • Es esencial reconocer que una vez que la opci贸n TDE es a帽adida a un option group, se vuelve una pieza permanente y no puede ser removida.
  1. Modos de encriptaci贸n TDE:
  • TDE ofrece dos modos de encriptaci贸n distintos:
  • TDE Tablespace Encryption: Este modo encripta tablas enteras, proporcionando un alcance m谩s amplio de protecci贸n de datos.
  • TDE Column Encryption: Este modo se centra en encriptar elementos individuales espec铆ficos dentro de la base de datos, permitiendo un control m谩s granular sobre qu茅 datos se encriptan.

Entender estos requisitos previos y las complejidades operacionales 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 con 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
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public

## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>

# 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

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

Hay formas de acceder a los datos de DynamoDB con SQL syntax, por lo tanto, los t铆picos SQL injections are also possible.

SQL Injection - HackTricks

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks