AWS - EC2 Privesc
Last updated
Last updated
Για περισσότερες πληροφορίες σχετικά με το EC2 ελέγξτε:
iam:PassRole
, ec2:RunInstances
Ένας επιτιθέμενος μπορεί να δημιουργήσει ένα instance συνδέοντας έναν ρόλο IAM και στη συνέχεια να αποκτήσει πρόσβαση στο instance για να κλέψει τα διαπιστευτήρια του ρόλου IAM από το metadata endpoint.
Πρόσβαση μέσω SSH
Εκτελέστε ένα νέο instance χρησιμοποιώντας ένα δημιουργημένο κλειδί ssh (--key-name
) και στη συνέχεια συνδεθείτε με αυτό μέσω ssh (αν θέλετε να δημιουργήσετε ένα νέο μπορεί να χρειαστεί να έχετε την άδεια ec2:CreateKeyPair
).
Πρόσβαση μέσω αναστρεφόμενου κελύφους στα δεδομένα χρήστη
Μπορείτε να εκτελέσετε μια νέα περίπτωση χρησιμοποιώντας τα δεδομένα χρήστη (--user-data
) που θα σας στείλουν έναν αναστρεφόμενο κελύφος. Δεν χρειάζεται να καθορίσετε την ομάδα ασφαλείας με αυτόν τον τρόπο.
Προσέχετε το GuradDuty αν χρησιμοποιείτε τα διαπιστευτήρια του IAM ρόλου έξω από την περίπτωση:
Πιθανή Επίδραση: Άμεση ανέλιξη σε οποιονδήποτε ρόλο EC2 που είναι συνδεδεμένος με υπάρχοντα προφίλ εικόνας.
Με αυτό το σύνολο δικαιωμάτων μπορείτε επίσης να δημιουργήσετε μια εικόνα EC2 και να την καταχωρήσετε μέσα σε έναν κατάλογο ECS. Με αυτόν τον τρόπο, οι υπηρεσίες ECS θα εκτελούνται μέσα στην εικόνα EC2 όπου έχετε πρόσβαση και στη συνέχεια μπορείτε να διεισδύσετε σε αυτές τις υπηρεσίες (docker containers) και να κλέψετε τους ρόλους ECS που είναι συνδεδεμένοι με αυτές.
Για να μάθετε πώς να εξαναγκάσετε τις υπηρεσίες ECS να τρέξουν σε αυτήν τη νέα περίπτωση EC2, ελέγξτε:
Εάν δεν μπορείτε να δημιουργήσετε μια νέα περίπτωση αλλά έχετε την άδεια ecs:RegisterContainerInstance
, μπορείτε να εγγραφείτε στην περίπτωση εντός του cluster και να πραγματοποιήσετε τη σχολιασμένη επίθεση.
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων στους ρόλους ECS που είναι συνδεδεμένοι με τις εργασίες.
iam:PassRole
, iam:AddRoleToInstanceProfile
Όμοια με την προηγούμενη περίπτωση, ένας επιτιθέμενος με αυτές τις άδειες μπορεί να αλλάξει τον ρόλο IAM μιας παραβιασμένης περίπτωσης έτσι ώστε να μπορεί να κλέψει νέα διαπιστευτήρια.
Καθώς ένα προφίλ περίπτωσης μπορεί να έχει μόνο 1 ρόλο, εάν το προφίλ περίπτωσης ήδη έχει ένα ρόλο (συνηθέστερη περίπτωση), θα χρειαστεί επίσης iam:RemoveRoleFromInstanceProfile
.
Εάν το προφίλ της εικόνας έχει έναν ρόλο και ο επιτιθέμενος δεν μπορεί να τον αφαιρέσει, υπάρχει μια άλλη λύση. Μπορεί να βρει ένα προφίλ εικόνας χωρίς ρόλο ή να δημιουργήσει ένα νέο (iam:CreateInstanceProfile
), να προσθέσει τον ρόλο σε αυτό το προφίλ εικόνας (όπως συζητήθηκε προηγουμένως) και να συσχετίσει το προφίλ εικόνας που έχει παραβιαστεί με μια παραβιασμένη εικόνα:
Εάν η εικόνα δεν έχει κανένα προφίλ εικόνας (ec2:AssociateIamInstanceProfile
) *
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων σε διαφορετικό ρόλο EC2 (χρειάζεστε πρόσβαση σε ένα AWS EC2 instance και κάποια επιπλέον άδεια ή συγκεκριμένη κατάσταση προφίλ instance).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Με αυτές τις άδειες είναι δυνατόν να αλλάξετε το προφίλ που συσχετίζεται με ένα instance, έτσι αν η επίθεση έχει ήδη πρόσβαση σε ένα instance, θα μπορεί να κλέψει διαπιστευτήρια για περισσότερους ρόλους προφίλ instance αλλάζοντας αυτόν που συσχετίζεται με αυτό.
Αν έχει ένα προφίλ instance, μπορείτε να αφαιρέσετε το προφίλ instance (ec2:DisassociateIamInstanceProfile
) και να το συσχετίσετε *
ή αντικαταστήστε το προφίλ της εικόνας της παραβιασμένης περίπτωσης (ec2:ReplaceIamInstanceProfileAssociation
). *
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων σε ένα διαφορετικό ρόλο EC2 (χρειάζεστε να έχετε παραβιάσει ένα AWS EC2 instance και κάποια επιπλέον άδεια ή συγκεκριμένη κατάσταση προφίλ instance).
ec2:RequestSpotInstances
,iam:PassRole
Ένας επιτιθέμενος με τις άδειες ec2:RequestSpotInstances
καιiam:PassRole
μπορεί να ζητήσει ένα Spot Instance με έναν ρόλο EC2 που είναι συνδεδεμένος και ένα rev shell στα δεδομένα χρήστη.
Μόλις το instance εκτελεστεί, μπορεί να κλέψει τον ρόλο IAM.
ec2:ModifyInstanceAttribute
Ένας επιτιθέμενος με το ec2:ModifyInstanceAttribute
μπορεί να τροποποιήσει τα χαρακτηριστικά των εισροών. Ανάμεσά τους, μπορεί να αλλάξει τα δεδομένα του χρήστη, πράγμα που σημαίνει ότι μπορεί να κάνει την είσοδο να εκτελέσει οποιαδήποτε δεδομένα. Αυτό μπορεί να χρησιμοποιηθεί για να πάρει ένα αντίστροφο κέλυφος (rev shell) στην EC2 είσοδο.
Να σημειωθεί ότι τα χαρακτηριστικά μπορούν να τροποποιηθούν μόνο όταν η είσοδος είναι σε κατάσταση διακοπής, οπότε απαιτούνται οι δικαιώματα ec2:StopInstances
και ec2:StartInstances
.
Πιθανές Επιπτώσεις: Άμεση ανέλιξη προνομίων σε οποιοδήποτε EC2 IAM Role που είναι συνδεδεμένο με ένα δημιουργημένο instance.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Ένας επιτιθέμενος με τα δικαιώματα ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
και ec2:ModifyLaunchTemplate
μπορεί να δημιουργήσει μια νέα έκδοση του Launch Template με ένα αντίστροφο κέλυφος (rev shell) στα δεδομένα χρήστη (user data) και οποιοδήποτε EC2 IAM Role πάνω του, να αλλάξει την προεπιλεγμένη έκδοση και οποιαδήποτε ομάδα Autoscaler που χρησιμοποιεί αυτό το Launch Template και είναι ρυθμισμένη να χρησιμοποιεί την τελευταία ή την προεπιλεγμένη έκδοση θα εκτελέσει ξανά τα instances χρησιμοποιώντας αυτό το template και θα εκτελέσει το αντίστροφο κέλυφος.
Πιθανές Επιπτώσεις: Άμεση αύξηση προνομίων σε διαφορετικό EC2 ρόλο.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Ένας επιτιθέμενος με τα δικαιώματα autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
μπορεί να δημιουργήσει μια διαμόρφωση εκκίνησης (Launch Configuration) με έναν IAM ρόλο και ένα αντίστροφο κέλυφος (rev shell) μέσα στα δεδομένα χρήστη (user data), και στη συνέχεια να δημιουργήσει μια ομάδα αυτόματης κλιμάκωσης (autoscaling group) από αυτήν τη διαμόρφωση και να περιμένει το αντίστροφο κέλυφος να κλέψει τον IAM ρόλο.
Πιθανές Επιπτώσεις: Άμεση ανέλιξη προνομίων σε διαφορετικό ρόλο EC2.
!autoscaling
Το σύνολο των δικαιωμάτων ec2:CreateLaunchTemplate
και autoscaling:CreateAutoScalingGroup
δεν επαρκούν για να αναβαθμίσουν τα προνόμια σε έναν ρόλο IAM, επειδή για να επισυνάψετε τον ρόλο που καθορίζεται στην Παραμετροποίηση Εκκίνησης ή στο Πρότυπο Εκκίνησης, χρειάζεστε τα δικαιώματα iam:PassRole
και ec2:RunInstances
(το οποίο είναι γνωστό ως ανέλιξη προνομίων).
ec2-instance-connect:SendSSHPublicKey
Ένας επιτιθέμενος με το δικαίωμα ec2-instance-connect:SendSSHPublicKey
μπορεί να προσθέσει ένα κλειδί ssh σε έναν χρήστη και να το χρησιμοποιήσει για να αποκτήσει πρόσβαση (αν έχει πρόσβαση ssh στην περίπτωση) ή για να αναβαθμίσει προνόμια.
Πιθανές Επιπτώσεις: Άμεση ανέλιξη προνομίων στους ρόλους IAM του EC2 που είναι συνδεδεμένοι με εκτελούμενες περιπτώσεις.
ec2-instance-connect:SendSerialConsoleSSHPublicKey
Ένας επιτιθέμενος με την άδεια ec2-instance-connect:SendSerialConsoleSSHPublicKey
μπορεί να προσθέσει ένα κλειδί ssh σε μια σειριακή σύνδεση. Εάν η σειριακή σύνδεση δεν είναι ενεργοποιημένη, ο επιτιθέμενος χρειάζεται την άδεια ec2:EnableSerialConsoleAccess
για να την ενεργοποιήσει.
Για να συνδεθείτε στη σειριακή θύρα, χρειάζεστε επίσης να γνωρίζετε το όνομα χρήστη και τον κωδικό πρόσβασης ενός χρήστη μέσα στη μηχανή.
Αυτός ο τρόπος δεν είναι τόσο χρήσιμος για προνομιούχα ανέλιξη, καθώς χρειάζεστε ένα όνομα χρήστη και έναν κωδικό πρόσβασης για να το εκμεταλλευτείτε.
Πιθανές Επιπτώσεις: (Πολύ δύσκολο να αποδειχθεί) Άμεση προνομιούχα ανέλιξη στους ρόλους EC2 IAM που είναι συνδεδεμένοι με τις εκτελούμενες περιπτώσεις.