AWS - Relational Database (RDS) Enum

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

Le service de base de données relationnelle (RDS) proposé par AWS est conçu pour simplifier le déploiement, l'exploitation et la mise à l'échelle d'une base de données relationnelle dans le cloud. Ce service offre les avantages de l'efficacité économique et de la scalabilité tout en automatisant des tâches intensives en main-d'œuvre telles que la provision matérielle, la configuration de la base de données, le patching et les sauvegardes.

AWS RDS prend en charge divers moteurs de base de données relationnelle largement utilisés, notamment MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server et Amazon Aurora, avec une compatibilité pour MySQL et PostgreSQL.

Les principales fonctionnalités de RDS comprennent :

  • La simplification de la gestion des instances de base de données.

  • La création de répliques de lecture pour améliorer les performances en lecture.

  • La configuration de déploiements multi-zones de disponibilité (AZ) pour garantir une haute disponibilité et des mécanismes de basculement.

  • L'intégration avec d'autres services AWS, tels que :

  • AWS Identity and Access Management (IAM) pour un contrôle d'accès robuste.

  • AWS CloudWatch pour une surveillance complète et des métriques.

  • AWS Key Management Service (KMS) pour garantir le chiffrement au repos.

Informations d'identification

Lors de la création du cluster de base de données, le nom d'utilisateur principal peut être configuré (admin par défaut). Pour générer le mot de passe de cet utilisateur, vous pouvez :

  • Indiquer un mot de passe vous-même

  • Demander à RDS de le générer automatiquement

  • Demander à RDS de le gérer dans AWS Secret Manager chiffré avec une clé KMS

Authentification

Il existe 3 types d'options d'authentification, mais l'utilisation du mot de passe principal est toujours autorisée :

Accès public & VPC

Par défaut, aucun accès public n'est accordé aux bases de données, cependant cela pourrait être accordé. Par conséquent, par défaut, seules les machines du même VPC pourront y accéder si le groupe de sécurité sélectionné (stocké dans EC2 SG) le permet.

Au lieu d'exposer une instance de base de données, il est possible de créer un proxy RDS qui améliore la scalabilité et la disponibilité du cluster de base de données.

De plus, le port de la base de données peut également être modifié.

Chiffrement

Le chiffrement est activé par défaut en utilisant une clé gérée par AWS (une CMK pourrait être choisie à la place).

En activant votre chiffrement, vous activez le chiffrement au repos pour votre stockage, vos instantanés, vos répliques de lecture et vos sauvegardes. Les clés pour gérer ce chiffrement peuvent être émises en utilisant KMS. Il n'est pas possible d'ajouter ce niveau de chiffrement après la création de votre base de données. Cela doit être fait pendant sa création.

Cependant, il existe une solution de contournement vous permettant de chiffrer une base de données non chiffrée comme suit. Vous pouvez créer un instantané de votre base de données non chiffrée, créer une copie chiffrée de cet instantané, utiliser cet instantané chiffré pour créer une nouvelle base de données, et ensuite, enfin, votre base de données serait alors chiffrée.

Chiffrement des données transparent (TDE)

Outre les capacités de chiffrement inhérentes à RDS au niveau de l'application, RDS prend également en charge des mécanismes de chiffrement supplémentaires au niveau de la plate-forme pour protéger les données au repos. Cela inclut le chiffrement transparent des données (TDE) pour Oracle et SQL Server. Cependant, il est crucial de noter que tandis que le TDE renforce la sécurité en chiffrant les données au repos, cela peut également affecter les performances de la base de données. Cet impact sur les performances est particulièrement notable lorsqu'il est utilisé en conjonction avec les fonctions cryptographiques MySQL ou les fonctions cryptographiques Transact-SQL de Microsoft.

Pour utiliser le TDE, certaines étapes préliminaires sont nécessaires :

  1. Association du groupe d'options :

  • La base de données doit être associée à un groupe d'options. Les groupes d'options servent de conteneurs pour les paramètres et les fonctionnalités, facilitant la gestion de la base de données, y compris les améliorations de sécurité.

  • Il est cependant important de noter que les groupes d'options ne sont disponibles que pour des moteurs de base de données et des versions spécifiques.

  1. Inclusion du TDE dans le groupe d'options :

  • Une fois associée à un groupe d'options, l'option de chiffrement transparent des données Oracle doit être incluse dans ce groupe.

  • Il est essentiel de reconnaître que une fois que l'option TDE est ajoutée à un groupe d'options, elle devient une fonctionnalité permanente et ne peut pas être supprimée.

  1. Modes de chiffrement TDE :

  • Le TDE offre deux modes de chiffrement distincts :

  • Chiffrement de l'espace de table TDE : Ce mode chiffre des tables entières, offrant une protection des données plus étendue.

  • Chiffrement de colonne TDE : Ce mode se concentre sur le chiffrement d'éléments spécifiques et individuels dans la base de données, permettant un contrôle plus granulaire sur les données à chiffrer.

Comprendre ces prérequis et les subtilités opérationnelles du TDE est crucial pour implémenter et gérer efficacement le chiffrement dans RDS, garantissant à la fois la sécurité des données et la conformité aux normes nécessaires.

Énumération

# 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

Accès non authentifié

pageAWS - RDS Unauthenticated Enum

Élévation de privilèges

pageAWS - RDS Privesc

Post-exploitation

pageAWS - RDS Post Exploitation

Persistance

pageAWS - RDS Persistence

Injection SQL

Il existe des moyens d'accéder aux données DynamoDB avec une syntaxe SQL, par conséquent, les injections SQL classiques sont également possibles.

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Dernière mise à jour