Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e

This commit is contained in:
Translator
2025-11-01 11:05:27 +00:00
parent c9f18d9779
commit d17ba6ad81
2 changed files with 57 additions and 39 deletions
@@ -1,26 +1,26 @@
# AWS - Enum de la base de données relationnelle (RDS)
# AWS - Base de données relationnelle (RDS) - Enumération
{{#include ../../../banners/hacktricks-training.md}}
## 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é des coûts et de la scalabilité tout en automatisant des tâches laborieuses comme la fourniture de matériel, la configuration de la base de données, les mises à jour et les sauvegardes.
Le **Relational Database Service (RDS)** proposé par AWS est conçu pour simplifier le déploiement, l'exploitation et la montée en charge d'une **base de données relationnelle dans le cloud**. Ce service offre des avantages en termes de coût et de scalabilité tout en automatisant des tâches chronophages comme le provisioning matériel, la configuration de la base, le patching et les sauvegardes.
AWS RDS prend en charge divers moteurs de bases de données relationnelles largement utilisés, notamment MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server et Amazon Aurora, avec compatibilité pour MySQL et PostgreSQL.
AWS RDS prend en charge plusieurs moteurs de bases de données relationnelles largement utilisés tels que MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server et Amazon Aurora, avec compatibilité pour MySQL et PostgreSQL.
Les principales caractéristiques de RDS incluent :
Fonctionnalités clés de RDS :
- **Gestion des instances de base de données** simplifiée.
- Création de **réplicas de lecture** pour améliorer les performances de lecture.
- Configuration de **déploiements multi-Zone de disponibilité (AZ)** pour garantir une haute disponibilité et des mécanismes de basculement.
- **La gestion des instances de bases de données** est simplifiée.
- Création de **read replicas** pour améliorer les performances en lecture.
- Configuration de **déploiements multi-Availability Zone (AZ)** pour garantir la haute disponibilité et le basculement.
- **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 et des métriques complètes.
- AWS Key Management Service (**KMS**) pour garantir le chiffrement au repos.
- AWS Identity and Access Management (**IAM**) pour un contrôle d'accès robuste.
- AWS **CloudWatch** pour le monitoring et les métriques.
- AWS Key Management Service (**KMS**) pour assurer le chiffrement au repos.
## Identifiants
Lors de la création du cluster DB, 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 :
Lors de la création du cluster DB, le **username** master 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**
@@ -30,45 +30,45 @@ Lors de la création du cluster DB, le **nom d'utilisateur** principal peut êtr
### Authentification
Il existe 3 types d'options d'authentification, mais l'utilisation du **mot de passe principal est toujours autorisée** :
Il existe 3 types d'options d'authentification, mais l'utilisation du **mot de passe master est toujours autorisée** :
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
### Accès public et VPC
### Accès public & VPC
Par défaut, **aucun accès public n'est accordé** aux bases de données, cependant, il **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.
Par défaut **aucun accès public n'est accordé** aux bases de données, cependant un accès **peut ê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 DB, il est possible de créer un **Proxy RDS** qui **améliore** la **scalabilité** et **la disponibilité** du cluster DB.
Au lieu d'exposer une instance DB, il est possible de créer un **RDS Proxy** qui **améliore** la **scalabilité** et la **disponibilité** du cluster DB.
De plus, le **port de la base de données peut également être modifié**.
De plus, le **port de la base de données peut ê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).
**Le chiffrement est activé par défaut** en utilisant une clé gérée par AWS (une CMK peut être choisie à la place).
En activant votre chiffrement, vous activez **le chiffrement au repos pour votre stockage, vos instantanés, vos réplicas 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 lors de sa création**.
En activant le chiffrement, vous activez **le chiffrement au repos pour votre stockage, vos snapshots, read replicas et vos backups**. Les clés pour gérer ce chiffrement peuvent être émises via **KMS**.
Il n'est pas possible d'ajouter ce niveau de chiffrement après la création de votre base de données. **Il doit être configuré lors de sa création**.
Cependant, il existe un **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 enfin, votre base de données serait alors chiffrée.
Cependant, il existe une **solution de contournement permettant de chiffrer une base non chiffrée comme suit** : vous pouvez créer un snapshot de votre base non chiffrée, créer une copie chiffrée de ce snapshot, utiliser ce snapshot chiffré pour créer une nouvelle base de données, et ainsi votre base sera alors chiffrée.
#### Chiffrement des données transparent (TDE)
#### Transparent Data Encryption (TDE)
En plus des 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 plateforme** pour protéger les données au repos. Cela inclut le **Chiffrement des données transparent (TDE)** pour Oracle et SQL Server. Cependant, il est crucial de noter que bien que le TDE améliore la sécurité en chiffrant les données au repos, il peut également **affecter les performances de la base de données**. Cet impact sur les performances est particulièrement perceptible lorsqu'il est utilisé en conjonction avec des fonctions cryptographiques MySQL ou des fonctions cryptographiques Transact-SQL de Microsoft.
En complément des capacités de chiffrement au niveau applicatif inhérentes à RDS, RDS prend également en charge **des mécanismes de chiffrement au niveau plateforme** pour protéger les données au repos. Cela inclut **Transparent Data Encryption (TDE)** pour Oracle et SQL Server. Toutefois, il est important de noter que bien que TDE renforce la sécurité en chiffrant les données au repos, il peut aussi **impacter les performances de la base**. Cet impact est particulièrement visible lorsqu'il est utilisé conjointement avec les fonctions cryptographiques de MySQL ou les fonctions cryptographiques Microsoft Transact-SQL.
Pour utiliser le TDE, certaines étapes préliminaires sont nécessaires :
Pour utiliser TDE, certaines étapes préliminaires sont requises :
1. **Association de 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é.
- Cependant, il est 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.
2. **Inclusion du TDE dans le groupe d'options** :
- Une fois associée à un groupe d'options, l'option de Chiffrement des données transparent Oracle doit être incluse dans ce groupe.
- Il est essentiel de reconnaître qu'une fois l'option TDE ajoutée à un groupe d'options, elle devient une caractéristique permanente et ne peut pas être supprimée.
1. **Association à un Option Group** :
- La base de données doit être associée à un option group. Les option groups servent de conteneurs pour des paramètres et fonctionnalités, facilitant la gestion de la base, y compris les améliorations de sécurité.
- Il est néanmoins important de noter que les option groups ne sont disponibles que pour certains moteurs et versions de bases de données.
2. **Inclusion de TDE dans l'Option Group** :
- Une fois associée à un option group, l'option Oracle Transparent Data Encryption doit être incluse dans ce groupe.
- Il est essentiel de reconnaître qu'une fois l'option TDE ajoutée à un option group, elle devient permanente et ne peut pas être supprimée.
3. **Modes de chiffrement TDE** :
- Le TDE offre deux modes de chiffrement distincts :
- **Chiffrement de tablespace TDE** : Ce mode chiffre des tables entières, offrant une portée de protection des données plus large.
- **Chiffrement de colonne TDE** : Ce mode se concentre sur le chiffrement d'éléments spécifiques et individuels au sein de la base de données, permettant un contrôle plus granulaire sur les données chiffrées.
- TDE propose deux modes de chiffrement distincts :
- **TDE Tablespace Encryption** : ce mode chiffre des tables entières, offrant une protection plus large des données.
- **TDE Column Encryption** : ce mode se concentre sur le chiffrement d'éléments spécifiques au sein de la base, permettant un contrôle plus granulaire sur les données chiffrées.
Comprendre ces prérequis et les complexités opérationnelles du TDE est crucial pour mettre en œuvre et gérer efficacement le chiffrement au sein de RDS, garantissant à la fois la sécurité des données et la conformité aux normes nécessaires.
Comprendre ces prérequis et les aspects opérationnels de TDE est crucial pour implémenter et gérer efficacement le chiffrement au sein de RDS, en garantissant à la fois la sécurité des données et la conformité aux normes requises.
### Énumération
```bash
@@ -80,6 +80,10 @@ 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?
@@ -91,6 +95,7 @@ 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
@@ -123,15 +128,15 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
../aws-post-exploitation/aws-rds-post-exploitation/README.md
{{#endref}}
### Persistance
### Persistence
{{#ref}}
../aws-persistence/aws-rds-persistence/README.md
{{#endref}}
### Injection SQL
### SQL Injection
Il existe des moyens d'accéder aux données de DynamoDB avec **la syntaxe SQL**, donc, des **injections SQL typiques sont également possibles**.
Il existe des moyens d'accéder aux données DynamoDB avec une **syntaxe SQL**, par conséquent, des **SQL injections** typiques sont aussi possibles.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
@@ -12,11 +12,11 @@ Pour plus d'informations, consultez :
## Port public
Il est possible d'accorder un accès public à la **base de données depuis Internet**. L'attaquant devra cependant **connaître le nom d'utilisateur et le mot de passe**, disposer d'un accès IAM, ou d'un **exploit** pour entrer dans la base de données.
Il est possible de donner un accès public à la **base de données depuis Internet**. L'attaquant devra néanmoins **connaître le nom d'utilisateur et le mot de passe**, disposer d'un accès IAM, ou utiliser un **exploit** pour accéder à la base de données.
## Snapshots RDS publics
## Instantanés RDS publics
AWS permet d'accorder **l'accès à n'importe qui pour télécharger des snapshots RDS**. Vous pouvez lister ces snapshots RDS publics très facilement depuis votre propre compte:
AWS permet de donner **l'accès à n'importe qui pour télécharger des instantanés RDS**. Vous pouvez lister ces instantanés RDS publics très facilement depuis votre propre compte :
```bash
# Public RDS snapshots
aws rds describe-db-snapshots --include-public
@@ -32,6 +32,19 @@ aws rds describe-db-snapshots --snapshot-type public [--region us-west-2]
## Even if in the console appear as there are public snapshot it might be public
## snapshots from other accounts used by the current account
```
## Snapshots de cluster RDS publics
De même, vous pouvez rechercher des snapshots de cluster.
```bash
# Public RDS cluster snapshots
aws rds describe-db-cluster-snapshots --include-public
## Search by account ID
aws rds describe-db-cluster-snapshots --include-public --query 'DBClusterSnapshots[?contains(DBClusterSnapshotIdentifier, `284546856933:`) == `true`]'
# From the own account you can check if there is any public cluster snapshot with:
aws rds describe-db-cluster-snapshots --snapshot-type public [--region us-west-2]
```
### Modèle d'URL publique
```
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306