AWS - RDS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες πληροφορίες σχετικά με το RDS ελέγξτε:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
Με αυτή την άδεια, ένας επιτιθέμενος μπορεί να τροποποιήσει τον κωδικό πρόσβασης του κύριου χρήστη, και την είσοδο μέσα στη βάση δεδομένων:
Θα χρειαστεί να μπορείτε να επικοινωνήσετε με τη βάση δεδομένων (συνήθως είναι προσβάσιμες μόνο από εσωτερικά δίκτυα).
Πιθανές Επιπτώσεις: Βρείτε ευαίσθητες πληροφορίες μέσα στις βάσεις δεδομένων.
Σύμφωνα με τα έγγραφα, ένας χρήστης με αυτή την άδεια θα μπορούσε να συνδεθεί στην DB instance.
Αν εκτελώντας SELECT datname FROM pg_database;
βρείτε μια βάση δεδομένων που ονομάζεται rdsadmin
, ξέρετε ότι βρίσκεστε μέσα σε μια βάση δεδομένων AWS postgresql.
Αρχικά μπορείτε να ελέγξετε αν αυτή η βάση δεδομένων έχει χρησιμοποιηθεί για πρόσβαση σε οποιαδήποτε άλλη υπηρεσία AWS. Μπορείτε να το ελέγξετε κοιτάζοντας τις εγκατεστημένες επεκτάσεις:
Αν βρείτε κάτι όπως aws_s3
μπορείτε να υποθέσετε ότι αυτή η βάση δεδομένων έχει κάποιο είδος πρόσβασης στο S3 (υπάρχουν άλλες επεκτάσεις όπως aws_ml
και aws_lambda
).
Επίσης, αν έχετε άδειες να εκτελέσετε aws rds describe-db-clusters
μπορείτε να δείτε εκεί αν το cluster έχει οποιοδήποτε IAM Role συσχετισμένο στο πεδίο AssociatedRoles
. Αν υπάρχει, μπορείτε να υποθέσετε ότι η βάση δεδομένων ήταν έτοιμη να έχει πρόσβαση σε άλλες υπηρεσίες AWS. Βασισμένοι στο όνομα του ρόλου (ή αν μπορείτε να αποκτήσετε τις άδειες του ρόλου) θα μπορούσατε να μαντέψετε ποια επιπλέον πρόσβαση έχει η βάση δεδομένων.
Τώρα, για να διαβάσετε ένα αρχείο μέσα σε ένα bucket πρέπει να γνωρίζετε την πλήρη διαδρομή. Μπορείτε να το διαβάσετε με:
Αν είχατε raw AWS credentials θα μπορούσατε επίσης να τα χρησιμοποιήσετε για να αποκτήσετε πρόσβαση σε δεδομένα S3 με:
Postgresql δεν χρειάζεται να αλλάξει καμία μεταβλητή ομάδας παραμέτρων για να μπορέσει να έχει πρόσβαση στο S3.
Μέσα σε ένα mysql, αν εκτελέσετε το ερώτημα SELECT User, Host FROM mysql.user;
και υπάρχει ένας χρήστης που ονομάζεται rdsadmin
, μπορείτε να υποθέσετε ότι βρίσκεστε μέσα σε μια AWS RDS mysql db.
Μέσα στο mysql εκτελέστε show variables;
και αν οι μεταβλητές όπως aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
, έχουν τιμές, μπορείτε να υποθέσετε ότι η βάση δεδομένων είναι προετοιμασμένη να έχει πρόσβαση σε δεδομένα S3.
Επίσης, αν έχετε δικαιώματα να εκτελέσετε aws rds describe-db-clusters
μπορείτε να ελέγξετε αν το cluster έχει κάποια συσχετισμένη ρόλο, που συνήθως σημαίνει πρόσβαση σε υπηρεσίες AWS).
Τώρα, για να διαβάσετε ένα αρχείο μέσα σε ένα bucket πρέπει να γνωρίζετε την πλήρη διαδρομή. Μπορείτε να το διαβάσετε με:
rds:AddRoleToDBCluster
, iam:PassRole
Ένας επιτιθέμενος με τις άδειες rds:AddRoleToDBCluster
και iam:PassRole
μπορεί να προσθέσει έναν καθορισμένο ρόλο σε μια υπάρχουσα RDS παρουσία. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα εντός της παρουσίας.
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις στα δεδομένα της RDS παρουσίας. Σημειώστε ότι ορισμένες βάσεις δεδομένων απαιτούν επιπλέον ρυθμίσεις όπως το Mysql, το οποίο χρειάζεται να καθορίσει το ρόλο ARN στις ομάδες παραμέτρων επίσης.
rds:CreateDBInstance
Μόνο με αυτή την άδεια, ένας επιτιθέμενος θα μπορούσε να δημιουργήσει μια νέα παρουσία μέσα σε ένα κλάστερ που ήδη υπάρχει και έχει συνημμένο ένα ρόλο IAM. Δεν θα μπορεί να αλλάξει τον κωδικό πρόσβασης του κύριου χρήστη, αλλά μπορεί να είναι σε θέση να εκθέσει τη νέα βάση δεδομένων στο διαδίκτυο:
rds:CreateDBInstance
, iam:PassRole
TODO: Δοκιμή
Ένας επιτιθέμενος με τις άδειες rds:CreateDBInstance
και iam:PassRole
μπορεί να δημιουργήσει μια νέα RDS instance με έναν καθορισμένο ρόλο συνημμένο. Ο επιτιθέμενος μπορεί στη συνέχεια να αποκτήσει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα εντός της instance.
Ορισμένες απαιτήσεις του ρόλου/προφίλ instance για να συνημεί (από εδώ):
Το προφίλ πρέπει να υπάρχει στον λογαριασμό σας.
Το προφίλ πρέπει να έχει έναν IAM ρόλο που η Amazon EC2 έχει άδειες να αναλάβει.
Το όνομα του προφίλ instance και το σχετικό όνομα IAM ρόλου πρέπει να ξεκινούν με το πρόθεμα AWSRDSCustom
.
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις στα δεδομένα της RDS παρουσίας.
rds:AddRoleToDBInstance
, iam:PassRole
Ένας επιτιθέμενος με τις άδειες rds:AddRoleToDBInstance
και iam:PassRole
μπορεί να προσθέσει έναν καθορισμένο ρόλο σε μια υπάρχουσα RDS παρουσία. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα εντός της παρουσίας.
Η DB παρουσία πρέπει να είναι εκτός ενός κλάσματος για αυτό
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις στα δεδομένα στην RDS instance.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)