AWS - RDS Privesc
Last updated
Last updated
Για περισσότερες πληροφορίες σχετικά με το RDS, ελέγξτε:
rds:ModifyDBInstance
Με αυτήν την άδεια, ένας επιτιθέμενος μπορεί να τροποποιήσει τον κωδικό πρόσβασης του κύριου χρήστη και την σύνδεση μέσα στη βάση δεδομένων:
Θα πρέπει να μπορείτε να επικοινωνήσετε με τη βάση δεδομένων (συνήθως είναι προσβάσιμες μόνο από εσωτερικά δίκτυα).
Πιθανές Επιπτώσεις: Εύρεση ευαίσθητων πληροφοριών μέσα στις βάσεις δεδομένων.
Σύμφωνα με τα έγγραφα ένας χρήστης με αυτήν την άδεια μπορεί να συνδεθεί στην περίπτωση της βάσης δεδομένων.
Εάν εκτελέσετε την εντολή SELECT datname FROM pg_database;
και βρείτε μια βάση δεδομένων με το όνομα rdsadmin
, τότε γνωρίζετε ότι βρίσκεστε μέσα σε μια AWS postgresql βάση δεδομένων.
Πρώτα μπορείτε να ελέγξετε εάν αυτή η βάση δεδομένων έχει χρησιμοποιηθεί για να αποκτήσει πρόσβαση σε οποιαδήποτε άλλη υπηρεσία της AWS. Μπορείτε να ελέγξετε αυτό παρατηρώντας τις εγκατεστημένες επεκτάσεις:
Εάν βρείτε κάτι όπως aws_s3
, μπορείτε να υποθέσετε ότι αυτή η βάση δεδομένων έχει κάποια πρόσβαση στο S3 (υπάρχουν και άλλες επεκτάσεις όπως aws_ml
και aws_lambda
).
Επίσης, εάν έχετε δικαιώματα για να εκτελέσετε aws rds describe-db-clusters
, μπορείτε να δείτε εάν ο συστάδα έχει κάποιον συνδεδεμένο IAM ρόλο στο πεδίο AssociatedRoles
. Εάν υπάρχει, μπορείτε να υποθέσετε ότι η βάση δεδομένων ήταν προετοιμασμένη για πρόσβαση σε άλλες υπηρεσίες του AWS. Με βάση το όνομα του ρόλου (ή εάν μπορείτε να πάρετε τα δικαιώματα του ρόλου), μπορείτε να μαντέψετε ποια επιπλέον πρόσβαση έχει η βάση δεδομένων.
Τώρα, για να διαβάσετε ένα αρχείο μέσα σε ένα κάδο, πρέπει να γνωρίζετε την πλήρη διαδρομή. Μπορείτε να το διαβάσετε με:
Εάν είχατε ακατέργαστα διαπιστευτήρια AWS, θα μπορούσατε επίσης να τα χρησιμοποιήσετε για να αποκτήσετε πρόσβαση σε δεδομένα 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 instance. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στο instance.
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις των δεδομένων στην περίπτωση RDS. Σημειώστε ότι ορισμένες βάσεις δεδομένων απαιτούν επιπλέον ρυθμίσεις, όπως η Mysql, η οποία χρειάζεται να καθορίσει το ρόλο ARN στα ομάδας παραμέτρων επίσης.
rds:CreateDBInstance
Μόνο με αυτήν την άδεια, ένας επιτιθέμενος μπορεί να δημιουργήσει μια νέα περίπτωση μέσα σε ένα υπάρχον cluster που έχει επισυναφθεί ένας ρόλος IAM. Δεν θα μπορεί να αλλάξει τον κωδικό του κύριου χρήστη, αλλά μπορεί να αποκαλύψει τη νέα περίπτωση βάσης δεδομένων στο διαδίκτυο:
rds:CreateDBInstance
, iam:PassRole
ΕΡΓΑΣΙΕΣ: Δοκιμή
Ένας επιτιθέμενος με τις άδειες rds:CreateDBInstance
και iam:PassRole
μπορεί να δημιουργήσει ένα νέο RDS instance με συνδεδεμένο ένα συγκεκριμένο ρόλο. Ο επιτιθέμενος μπορεί στη συνέχεια να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στο instance.
Ορισμένες απαιτήσεις για τον ρόλο/προφίλ του instance που θα συνδεθεί (από εδώ):
Το προφίλ πρέπει να υπάρχει στον λογαριασμό σας.
Το προφίλ πρέπει να έχει έναν ρόλο IAM που ο Amazon EC2 έχει δικαιώματα να υποθέσει.
Το όνομα του προφίλ του instance και το συνδεδεμένο όνομα του ρόλου IAM πρέπει να ξεκινά με το πρόθεμα AWSRDSCustom
.
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις στα δεδομένα της RDS περίπτωσης.
rds:AddRoleToDBInstance
, iam:PassRole
Ένας επιτιθέμενος με τις άδειες rds:AddRoleToDBInstance
και iam:PassRole
μπορεί να προσθέσει έναν καθορισμένο ρόλο σε μια υπάρχουσα περίπτωση RDS. Αυτό θα μπορούσε να επιτρέψει στον επιτιθέμενο να έχει πρόσβαση σε ευαίσθητα δεδομένα ή να τροποποιήσει τα δεδομένα μέσα στην περίπτωση.
Η περίπτωση της βάσης δεδομένων πρέπει να είναι εκτός ενός συστήματος συστάδας για αυτό
Πιθανές Επιπτώσεις: Πρόσβαση σε ευαίσθητα δεδομένα ή μη εξουσιοδοτημένες τροποποιήσεις των δεδομένων στην περίπτωση RDS.