AWS - Relational Database (RDS) Enum

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Informazioni di Base

Il Servizio Database Relazionale (RDS) offerto da AWS è progettato per semplificare il rilascio, il funzionamento e la scalabilità di un database relazionale nel cloud. Questo servizio offre i vantaggi dell'efficienza dei costi e della scalabilità automatizzando compiti intensivi come la fornitura di hardware, la configurazione del database, il patching 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 chiave di RDS includono:

  • La gestione delle istanze del database è semplificata.

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

  • Configurazione di implementazioni multi-Zona di Disponibilità (AZ) per garantire alta disponibilità e meccanismi di failover.

  • Integrazione con altri servizi AWS, come:

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

  • 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 del database, è possibile configurare il nome utente principale (admin per impostazione predefinita). Per generare la password di questo utente è possibile:

  • Indicare una password da soli

  • Dire a RDS di generarla automaticamente

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

Autenticazione

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

Accesso Pubblico & VPC

Per impostazione predefinita non è concesso alcun accesso pubblico ai database, tuttavia potrebbe essere concesso. Pertanto, per impostazione predefinita solo le macchine dalla stessa VPC potranno accedervi se il gruppo di sicurezza selezionato (sono memorizzati in EC2 SG) lo consente.

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

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

Crittografia

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

Abilitando la crittografia, si abilita la crittografia a riposo per il tuo archivio, 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, c'è un workaround che ti consente di crittografare un database non crittografato come segue. Puoi creare uno snapshot del tuo database non crittografato, creare una copia crittografata di tale snapshot, utilizzare quel snapshot crittografato per creare un nuovo database e quindi, infine, il tuo database sarebbe crittografato.

Crittografia dei Dati Trasparente (TDE)

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

Per utilizzare TDE, sono necessari determinati 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 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 di Crittografia dei Dati Trasparente di Oracle deve essere inclusa in tale gruppo.

  • È essenziale riconoscere che una volta che l'opzione TDE è aggiunta 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 dello Spazio delle Tabelle TDE: Questa modalità crittografa intere tabelle, fornendo un'ampia protezione dei dati.

  • Crittografia delle Colonne 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 requisiti preliminari e le complessità operative di TDE è cruciale per implementare e gestire in modo efficace 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

pageAWS - RDS Unauthenticated Enum

Privesc

pageAWS - RDS Privesc

Post Esploitation

pageAWS - RDS Post Exploitation

Persistenza

pageAWS - RDS Persistence

SQL Injection

Ci sono modi per accedere ai dati di DynamoDB con sintassi SQL, pertanto, sono possibili anche iniezioni SQL tipiche.

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated