AWS - Database relazionale (RDS) Enumerazione
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Informazioni di base
Il Relational Database Service (RDS) offerto da AWS è progettato per semplificare il deployment, l’operatività e lo scaling di un database relazionale nel cloud. Questo servizio offre vantaggi in termini di costi e scalabilità automatizzando attività laboriose come il provisioning dell’hardware, la configurazione del database, il patching e i backup.
AWS RDS supporta diversi motori di database relazionali molto diffusi inclusi MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server e Amazon Aurora, con compatibilità per entrambe le versioni MySQL e PostgreSQL.
Le caratteristiche principali di RDS includono:
- La gestione delle istanze di database è semplificata.
- Creazione di read replicas 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 solido controllo degli accessi.
- AWS CloudWatch per monitoraggio e metriche complete.
- AWS Key Management Service (KMS) per garantire la crittografia a riposo.
Credenziali
Quando si crea il DB cluster lo username master può essere configurato (admin di default). Per generare la password di questo utente puoi:
- Indicare una password manualmente
- Dire a RDS di generarla automaticamente
- Dire a RDS di gestirla in AWS Secret Manager crittografata con una chiave KMS
.png)
Autenticazione
Ci sono 3 tipi di opzioni di autenticazione, ma l’uso della password principale è sempre consentito:
.png)
Accesso pubblico & VPC
Per default non viene concesso alcun accesso pubblico ai database, tuttavia potrebbe essere concesso. Pertanto, di default solo le macchine nella stessa VPC saranno in grado di accedervi se il security group selezionato (sono memorizzati in EC2 SG) lo permette.
Invece di esporre un’istanza DB, è possibile creare una RDS Proxy che migliora la scalabilità e la disponibilità del DB cluster.
Inoltre, è possibile modificare anche la porta del database.
Crittografia
La crittografia è abilitata di default utilizzando una chiave gestita da AWS (si può scegliere anche una CMK).
Abilitando la crittografia, si abilita la crittografia a riposo per lo storage, gli snapshot, le read replicas e i backup. Le chiavi per gestire questa crittografia possono essere emesse usando KMS.
Non è possibile aggiungere questo livello di crittografia dopo che il database è stato creato. Deve essere fatto durante la creazione.
Tuttavia, esiste una soluzione alternativa che permette di crittografare un database non crittografato come segue. È possibile creare uno snapshot del database non crittografato, creare una copia crittografata di quello snapshot, usare quello snapshot crittografato per creare un nuovo database e, infine, il database sarà crittografato.
Transparent Data Encryption (TDE)
Oltre alle capacità di crittografia intrinseche a RDS a livello applicativo, RDS supporta anche meccanismi di crittografia a livello di piattaforma aggiuntivi per proteggere i dati a riposo. Questo include Transparent Data Encryption (TDE) per Oracle e SQL Server. Tuttavia, è importante notare che mentre TDE migliora la sicurezza cifrando i dati a riposo, può anche influire sulle prestazioni del database. Questo impatto sulle prestazioni è particolarmente evidente quando usato insieme alle funzioni crittografiche di MySQL o alle funzioni crittografiche Transact-SQL di Microsoft.
Per utilizzare TDE, sono richiesti alcuni passaggi preliminari:
- Associazione a un Option Group:
- Il database deve essere associato a un option group. Gli option group servono come contenitori per impostazioni e funzionalità, facilitando la gestione del database, comprese le migliorie di sicurezza.
- Tuttavia, è importante notare che gli option group sono disponibili solo per specifici motori di database e versioni.
- Inclusione di TDE nell’Option Group:
- Una volta associato a un option group, l’opzione Oracle Transparent Data Encryption deve essere inclusa in quel gruppo.
- È essenziale riconoscere che una volta aggiunta l’opzione TDE a un option group, diventa permanente e non può essere rimossa.
- Modalità di crittografia TDE:
- TDE offre due diverse modalità di crittografia:
- TDE Tablespace Encryption: questa modalità cripta interi tablespace, offrendo una protezione dati più ampia.
- TDE Column Encryption: questa modalità si concentra sulla crittografia di elementi specifici e individuali all’interno del database, permettendo un controllo più granulare su quali dati vengono criptati.
Comprendere questi prerequisiti e le complessità operative di TDE è fondamentale per implementare e gestire efficacemente la crittografia all’interno di RDS, assicurando sia la sicurezza dei dati sia 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
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
Accesso non autenticato
AWS - RDS Unauthenticated Enum
Privesc
Post Exploitation
Persistence
SQL Injection
Esistono modi per accedere ai dati di DynamoDB con SQL syntax, pertanto le tipiche SQL injections sono anche possibili.
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
HackTricks Cloud

