AWS - Step Functions Privesc
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες πληροφορίες σχετικά με αυτή την υπηρεσία AWS, ελέγξτε:
AWS - Step Functions EnumΑυτές οι τεχνικές ανύψωσης προνομίων θα απαιτήσουν τη χρήση ορισμένων πόρων AWS step function προκειμένου να εκτελέσουν τις επιθυμητές ενέργειες ανύψωσης προνομίων.
Για να ελέγξετε όλες τις πιθανές ενέργειες, μπορείτε να μεταβείτε στον δικό σας λογαριασμό AWS, να επιλέξετε την ενέργεια που θα θέλατε να χρησιμοποιήσετε και να δείτε τις παραμέτρους που χρησιμοποιεί, όπως στο:
Ή μπορείτε επίσης να μεταβείτε στην τεκμηρίωση API AWS και να ελέγξετε τα έγγραφα κάθε ενέργειας:
states:TestState
& iam:PassRole
Ένας επιτιθέμενος με τα δικαιώματα states:TestState
& iam:PassRole
μπορεί να δοκιμάσει οποιαδήποτε κατάσταση και να περάσει οποιονδήποτε ρόλο IAM σε αυτήν χωρίς να δημιουργήσει ή να ενημερώσει μια υπάρχουσα μηχανή καταστάσεων, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε άλλες υπηρεσίες AWS με τα δικαιώματα των ρόλων. Συνδυασμένα, αυτά τα δικαιώματα μπορούν να οδηγήσουν σε εκτενείς μη εξουσιοδοτημένες ενέργειες, από την παραποίηση ροών εργασίας για την τροποποίηση δεδομένων έως διαρροές δεδομένων, παραποίηση πόρων και ανύψωση προνομίων.
Τα παρακάτω παραδείγματα δείχνουν πώς να δοκιμάσετε μια κατάσταση που δημιουργεί ένα access key για τον χρήστη admin
εκμεταλλευόμενος αυτές τις άδειες και έναν επιτρεπτικό ρόλο του περιβάλλοντος AWS. Αυτός ο επιτρεπτικός ρόλος θα πρέπει να έχει οποιαδήποτε πολιτική υψηλών προνομίων συσχετισμένη με αυτόν (για παράδειγμα arn:aws:iam::aws:policy/AdministratorAccess
) που επιτρέπει στην κατάσταση να εκτελεί την ενέργεια iam:CreateAccessKey
:
stateDefinition.json:
Εντολή που εκτελέστηκε για να πραγματοποιηθεί η privesc:
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη εκτέλεση και χειρισμός ροών εργασίας και πρόσβαση σε ευαίσθητους πόρους, που μπορεί να οδηγήσει σε σημαντικές παραβιάσεις ασφάλειας.
states:CreateStateMachine
& iam:PassRole
& (states:StartExecution
| states:StartSyncExecution
)Ένας επιτιθέμενος με το states:CreateStateMachine
& iam:PassRole
θα μπορούσε να δημιουργήσει μια μηχανή καταστάσεων και να της παρέχει οποιονδήποτε ρόλο IAM, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε άλλες υπηρεσίες AWS με τις άδειες του ρόλου. Σε αντίθεση με την προηγούμενη τεχνική privesc (states:TestState
& iam:PassRole
), αυτή δεν εκτελείται από μόνη της, θα χρειαστεί επίσης να έχετε τις άδειες states:StartExecution
ή states:StartSyncExecution
(states:StartSyncExecution
δεν είναι διαθέσιμη για τυπικές ροές εργασίας, μόνο για εκφρασμένες μηχανές καταστάσεων) προκειμένου να ξεκινήσετε και να εκτελέσετε τη μηχανή καταστάσεων.
Τα παρακάτω παραδείγματα δείχνουν πώς να δημιουργήσετε μια μηχανή καταστάσεων που δημιουργεί ένα access key για τον χρήστη admin
και εξάγει αυτό το access key σε ένα S3 bucket που ελέγχεται από τον επιτιθέμενο, εκμεταλλευόμενη αυτές τις άδειες και έναν επιεική ρόλο του περιβάλλοντος AWS. Αυτός ο επιεικής ρόλος θα πρέπει να έχει οποιαδήποτε πολιτική υψηλών προνομίων συνδεδεμένη με αυτόν (για παράδειγμα arn:aws:iam::aws:policy/AdministratorAccess
) που επιτρέπει στη μηχανή καταστάσεων να εκτελεί τις ενέργειες iam:CreateAccessKey
& s3:putObject
.
stateMachineDefinition.json:
Εντολή που εκτελέστηκε για δημιουργία της μηχανής κατάστασης:
Εντολή που εκτελέστηκε για να ξεκινήσει μια εκτέλεση της προηγουμένως δημιουργημένης μηχανής καταστάσεων:
Ο ελεγχόμενος από τον επιτιθέμενο S3 κάδος θα πρέπει να έχει δικαιώματα να αποδέχεται μια ενέργεια s3:PutObject από τον λογαριασμό του θύματος.
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη εκτέλεση και χειρισμός ροών εργασίας και πρόσβαση σε ευαίσθητους πόρους, που μπορεί να οδηγήσει σε σημαντικές παραβιάσεις ασφάλειας.
states:UpdateStateMachine
& (όχι πάντα απαραίτητο) iam:PassRole
Ένας επιτιθέμενος με την άδεια states:UpdateStateMachine
θα μπορούσε να τροποποιήσει τον ορισμό μιας μηχανής καταστάσεων, προσθέτοντας επιπλέον κρυφές καταστάσεις που θα μπορούσαν να καταλήξουν σε κλιμάκωση προνομίων. Με αυτόν τον τρόπο, όταν ένας νόμιμος χρήστης ξεκινά μια εκτέλεση της μηχανής καταστάσεων, αυτή η νέα κακόβουλη κρυφή κατάσταση θα εκτελείται και η κλιμάκωση προνομίων θα είναι επιτυχής.
Ανάλογα με το πόσο επιτρεπτικός είναι ο IAM Ρόλος που σχετίζεται με τη μηχανή καταστάσεων, ένας επιτιθέμενος θα αντιμετωπίσει 2 καταστάσεις:
Επιτρεπτικός IAM Ρόλος: Εάν ο IAM Ρόλος που σχετίζεται με τη μηχανή καταστάσεων είναι ήδη επιτρεπτικός (έχει για παράδειγμα την πολιτική arn:aws:iam::aws:policy/AdministratorAccess
συνημμένη), τότε η άδεια iam:PassRole
δεν θα απαιτείται προκειμένου να κλιμακωθούν τα προνόμια, καθώς δεν θα είναι απαραίτητο να ενημερωθεί και ο IAM Ρόλος, με τον ορισμό της μηχανής καταστάσεων να είναι αρκετός.
Μη επιτρεπτικός IAM Ρόλος: Σε αντίθεση με την προηγούμενη περίπτωση, εδώ ένας επιτιθέμενος θα απαιτήσει επίσης την άδεια iam:PassRole
καθώς θα είναι απαραίτητο να συσχετιστεί ένας επιτρεπτικός IAM Ρόλος με τη μηχανή καταστάσεων εκτός από την τροποποίηση του ορισμού της μηχανής καταστάσεων.
Τα παρακάτω παραδείγματα δείχνουν πώς να ενημερώσετε μια νόμιμη μηχανή κατάστασης που απλώς καλεί μια συνάρτηση Lambda HelloWorld, προκειμένου να προσθέσετε μια επιπλέον κατάσταση που προσθέτει τον χρήστη unprivilegedUser
στην ομάδα IAM administrator
. Με αυτόν τον τρόπο, όταν ένας νόμιμος χρήστης ξεκινά μια εκτέλεση της ενημερωμένης μηχανής κατάστασης, αυτή η νέα κακόβουλη κρυφή κατάσταση θα εκτελείται και η κλιμάκωση προνομίων θα είναι επιτυχής.
Εάν η μηχανή κατάστασης δεν έχει συσχετισμένο έναν επιτρεπτικό ρόλο IAM, θα απαιτείται επίσης η άδεια iam:PassRole
για να ενημερώσετε τον ρόλο IAM προκειμένου να συσχετίσετε έναν επιτρεπτικό ρόλο IAM (για παράδειγμα, έναν με την πολιτική arn:aws:iam::aws:policy/AdministratorAccess
συνημμένη).
Εντολή που εκτελέστηκε για να ενημερώσει τη νόμιμη μηχανή κατάστασης:
Πιθανές Επιπτώσεις: Μη εξουσιοδοτημένη εκτέλεση και χειρισμός ροών εργασίας και πρόσβαση σε ευαίσθητους πόρους, που μπορεί να οδηγήσει σε σημαντικές παραβιάσεις ασφάλειας.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)