AWS - Σχεσιακή Βάση Δεδομένων (RDS) Enum
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
Η Relational Database Service (RDS) που προσφέρει η AWS έχει σχεδιαστεί για να απλοποιεί την ανάπτυξη, τη λειτουργία και την κλιμάκωση μιας σχεσιακής βάσης δεδομένων στο cloud. Αυτή η υπηρεσία προσφέρει πλεονεκτήματα σε κόστος και κλιμάκωση, ενώ αυτοματοποιεί εργασίες που απαιτούν πολλή χειρονακτική εργασία όπως παροχή hardware, ρύθμιση βάσης δεδομένων, patching και backups.
Το AWS RDS υποστηρίζει διάφορους ευρέως χρησιμοποιούμενους relational database engines όπως MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server και Amazon Aurora, με συμβατότητα για MySQL και PostgreSQL.
Κύρια χαρακτηριστικά του RDS περιλαμβάνουν:
- Η διαχείριση των database instances απλοποιείται.
- Δημιουργία read replicas για βελτίωση της απόδοσης ανάγνωσης.
- Ρύθμιση multi-Availability Zone (AZ) deployments για διασφάλιση υψηλής διαθεσιμότητας και μηχανισμών failover.
- Ενσωμάτωση με άλλες υπηρεσίες AWS, όπως:
- AWS Identity and Access Management (IAM) για στιβαρό έλεγχο πρόσβασης.
- AWS CloudWatch για παρακολούθηση και metrics.
- AWS Key Management Service (KMS) για κρυπτογράφηση at rest.
Credentials
Κατά τη δημιουργία του DB cluster το κύριο username μπορεί να ρυθμιστεί (admin από προεπιλογή). Για να δημιουργήσετε το password αυτού του χρήστη μπορείτε να:
- Καταχωρήσετε ένα password εσείς
- Ζητήσετε από το RDS να το auto generate
- Ζητήσετε από το RDS να το διαχειρίζεται στο AWS Secret Manager κρυπτογραφημένο με ένα KMS key
.png)
Authentication
Υπάρχουν 3 τύποι επιλογών authentication, αλλά η χρήση του master password επιτρέπεται πάντα:
.png)
Δημόσια Πρόσβαση & VPC
Εξ ορισμού δεν παρέχεται δημόσια πρόσβαση στις βάσεις δεδομένων, ωστόσο μπορεί να παραχωρηθεί. Συνεπώς, εξ ορισμού μόνο μηχανές από το ίδιο VPC θα μπορούν να έχουν πρόσβαση σε αυτήν αν το επιλεγμένο security group (are stored in EC2 SG) το επιτρέπει.
Αντί να εκθέσετε ένα DB instance, είναι δυνατή η δημιουργία ενός RDS Proxy που βελτιώνει την scalability & availability του DB cluster.
Επιπλέον, η θύρα της βάσης δεδομένων μπορεί επίσης να τροποποιηθεί.
Κρυπτογράφηση
Η κρυπτογράφηση είναι ενεργοποιημένη από προεπιλογή χρησιμοποιώντας ένα AWS managed key (ενα CMK μπορεί να επιλεγεί ως εναλλακτική).
Ενεργοποιώντας την κρυπτογράφησή σας, ενεργοποιείτε encryption at rest για το storage, τα snapshots, τα read replicas και τα backups σας. Τα κλειδιά για τη διαχείριση αυτής της κρυπτογράφησης μπορούν να εκδοθούν χρησιμοποιώντας KMS.
Δεν είναι δυνατό να προστεθεί αυτό το επίπεδο κρυπτογράφησης αφού η βάση δεδομένων έχει δημιουργηθεί. Πρέπει να γίνει κατά τη δημιουργία της.
Ωστόσο, υπάρχει μια παρέμβαση (workaround) που σας επιτρέπει να κρυπτογραφήσετε μια μη κρυπτογραφημένη βάση δεδομένων ως εξής. Μπορείτε να δημιουργήσετε ένα snapshot της μη κρυπτογραφημένης βάσης σας, να δημιουργήσετε ένα κρυπτογραφημένο αντίγραφο αυτού του snapshot, να χρησιμοποιήσετε αυτό το κρυπτογραφημένο snapshot για να δημιουργήσετε μια νέα βάση δεδομένων και, τελικά, η βάση δεδομένων σας θα είναι κρυπτογραφημένη.
Transparent Data Encryption (TDE)
Εκτός από τις δυνατότητες κρυπτογράφησης που παρέχει το RDS σε επίπεδο εφαρμογής, το RDS υποστηρίζει επίσης επιπλέον μηχανισμούς κρυπτογράφησης σε επίπεδο πλατφόρμας για την προστασία των δεδομένων at rest. Αυτό περιλαμβάνει Transparent Data Encryption (TDE) για Oracle και SQL Server. Ωστόσο, είναι σημαντικό να σημειωθεί ότι ενώ το TDE βελτιώνει την ασφάλεια κρυπτογραφώντας τα δεδομένα at rest, μπορεί επίσης να επηρεάσει την απόδοση της βάσης δεδομένων. Αυτή η επίπτωση στην απόδοση είναι ιδιαίτερα εμφανής όταν χρησιμοποιείται σε συνδυασμό με MySQL cryptographic functions ή Microsoft Transact-SQL cryptographic functions.
Για να χρησιμοποιήσετε το TDE, απαιτούνται ορισμένα προκαταρκτικά βήματα:
- Option Group Association:
- Η βάση δεδομένων πρέπει να συσχετιστεί με ένα option group. Τα option groups λειτουργούν ως δοχεία για ρυθμίσεις και χαρακτηριστικά, διευκολύνοντας τη διαχείριση της βάσης δεδομένων, συμπεριλαμβανομένων των βελτιώσεων ασφάλειας.
- Ωστόσο, είναι σημαντικό να σημειωθεί ότι τα option groups είναι διαθέσιμα μόνο για συγκεκριμένους database engines και εκδόσεις.
- Inclusion of TDE in Option Group:
- Μόλις συσχετιστεί με ένα option group, η επιλογή Oracle Transparent Data Encryption πρέπει να προστεθεί σε αυτό το group.
- Είναι απαραίτητο να αναγνωριστεί ότι μόλις προστεθεί η επιλογή TDE σε ένα option group, γίνεται μόνιμη και δεν μπορεί να αφαιρεθεί.
- TDE Encryption Modes:
- Το TDE προσφέρει δύο διακριτούς τρόπους κρυπτογράφησης:
- TDE Tablespace Encryption: Αυτός ο τρόπος κρυπτογραφεί ολόκληρα tablespaces, παρέχοντας ευρύτερο επίπεδο προστασίας δεδομένων.
- TDE Column Encryption: Αυτός ο τρόπος επικεντρώνεται στην κρυπτογράφηση συγκεκριμένων, ατομικών πεδίων μέσα στη βάση δεδομένων, επιτρέποντας πιο λεπτομερή έλεγχο στο ποια δεδομένα κρυπτογραφούνται.
Η κατανόηση αυτών των προαπαιτούμενων και των λειτουργικών λεπτομερειών του TDE είναι κρίσιμη για την αποτελεσματική εφαρμογή και διαχείριση της κρυπτογράφησης στο RDS, διασφαλίζοντας τόσο την ασφάλεια των δεδομένων όσο και τη συμμόρφωση με τα απαραίτητα πρότυπα.
Καταγραφή
# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>
## Cluster snapshots
aws rds describe-db-cluster-snapshots
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public
## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>
# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups
## Find automated backups
aws rds describe-db-instance-automated-backups
## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public
## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a
# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public
# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets
## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately
Μη Εξουσιοδοτημένη Πρόσβαση
AWS - RDS Unauthenticated Enum
Privesc
Post Exploitation
Persistence
SQL Injection
Υπάρχουν τρόποι πρόσβασης στα δεδομένα του DynamoDB με SQL syntax, επομένως οι τυπικές SQL injections είναι επίσης δυνατές.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

