AWS - Relational Database (RDS) Enum

Supporta HackTricks

Informazioni di base

Il Relational Database Service (RDS) offerto da AWS è progettato per semplificare il deployment, l'operazione e la scalabilità di un database relazionale nel cloud. Questo servizio offre i vantaggi di efficienza dei costi e scalabilità automatizzando compiti laboriosi come il provisioning dell'hardware, la configurazione del database, l'applicazione di patch e i backup.

AWS RDS supporta vari motori di database relazionali ampiamente utilizzati, tra cui MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, con compatibilità sia per MySQL che per PostgreSQL.

Le caratteristiche principali di RDS includono:

  • Gestione delle istanze di database semplificata.

  • Creazione di repliche di lettura per migliorare le prestazioni di lettura.

  • Configurazione di deployment multi-Availability Zone (AZ) per garantire alta disponibilità e meccanismi di failover.

  • Integrazione con altri servizi AWS, come:

  • AWS Identity and Access Management (IAM) per un controllo degli accessi robusto.

  • AWS CloudWatch per un monitoraggio e metriche completi.

  • AWS Key Management Service (KMS) per garantire la crittografia a riposo.

Credenziali

Quando si crea il cluster DB, il nome utente master può essere configurato (admin per impostazione predefinita). Per generare la password di questo utente puoi:

  • Indicare una password tu stesso

  • Dire a RDS di generarla automaticamente

  • Dire a RDS di gestirla in AWS Secret Manager crittografata con una chiave KMS

Autenticazione

Ci sono 3 tipi di opzioni di autenticazione, ma l'uso della password master è sempre consentito:

Accesso Pubblico & VPC

Per impostazione predefinita non è concesso l'accesso pubblico ai database, tuttavia potrebbe essere concesso. Pertanto, per impostazione predefinita solo le macchine dello stesso VPC saranno in grado di accedervi se il gruppo di sicurezza selezionato (sono memorizzati in EC2 SG) lo consente.

Invece di esporre un'istanza DB, è possibile creare un RDS Proxy che migliora la scalabilità e la disponibilità del cluster DB.

Inoltre, anche la porta del database può essere modificata.

Crittografia

La crittografia è abilitata per impostazione predefinita utilizzando una chiave gestita da AWS (potrebbe essere scelta una CMK invece).

Abilitando la crittografia, stai abilitando la crittografia a riposo per il tuo storage, snapshot, repliche di lettura e i tuoi backup. Le chiavi per gestire questa crittografia possono essere emesse utilizzando KMS. Non è possibile aggiungere questo livello di crittografia dopo che il database è stato creato. Deve essere fatto durante la sua creazione.

Tuttavia, esiste una soluzione alternativa che consente di crittografare un database non crittografato come segue. Puoi creare uno snapshot del tuo database non crittografato, creare una copia crittografata di quello snapshot, utilizzare quello snapshot crittografato per creare un nuovo database e poi, infine, il tuo database sarà crittografato.

Transparent Data Encryption (TDE)

Oltre alle capacità di crittografia intrinseche a RDS a livello di applicazione, RDS supporta anche meccanismi di crittografia aggiuntivi a livello di piattaforma per proteggere i dati a riposo. Questo include Transparent Data Encryption (TDE) per Oracle e SQL Server. Tuttavia, è cruciale notare che mentre TDE migliora la sicurezza crittografando i dati a riposo, può anche influenzare le prestazioni del database. Questo impatto sulle prestazioni è particolarmente evidente quando viene utilizzato in combinazione con le funzioni crittografiche di MySQL o le funzioni crittografiche di Microsoft Transact-SQL.

Per utilizzare TDE, sono necessari alcuni passaggi preliminari:

  1. Associazione del Gruppo di Opzioni:

  • Il database deve essere associato a un gruppo di opzioni. I gruppi di opzioni fungono da contenitori per impostazioni e funzionalità, facilitando la gestione del database, inclusi i miglioramenti della sicurezza.

  • Tuttavia, è importante notare che i gruppi di opzioni sono disponibili solo per motori di database e versioni specifici.

  1. Inclusione di TDE nel Gruppo di Opzioni:

  • Una volta associato a un gruppo di opzioni, l'opzione Oracle Transparent Data Encryption deve essere inclusa in quel gruppo.

  • È essenziale riconoscere che una volta aggiunta l'opzione TDE a un gruppo di opzioni, diventa una caratteristica permanente e non può essere rimossa.

  1. Modalità di Crittografia TDE:

  • TDE offre due modalità di crittografia distinte:

  • Crittografia Tablespace TDE: Questa modalità crittografa intere tabelle, fornendo una protezione dei dati più ampia.

  • Crittografia Colonna TDE: Questa modalità si concentra sulla crittografia di elementi specifici e individuali all'interno del database, consentendo un controllo più granulare su quali dati vengono crittografati.

Comprendere questi prerequisiti e le complessità operative di TDE è cruciale per implementare e gestire efficacemente la crittografia all'interno di RDS, garantendo sia la sicurezza dei dati che la conformità agli standard necessari.

Enumerazione

# 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

Accesso Non Autenticato

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistenza

AWS - RDS Persistence

SQL Injection

Ci sono modi per accedere ai dati di DynamoDB con sintassi SQL, quindi, sono possibili anche le tipiche SQL injection.

Supporta HackTricks

Last updated