AWS - EC2 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)
Για περισσότερες πληροφορίες σχετικά με το EC2 ελέγξτε:
AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumiam:PassRole
, ec2:RunInstances
Ένας επιτιθέμενος θα μπορούσε να δημιουργήσει μια παρουσία συνδέοντας έναν ρόλο IAM και στη συνέχεια να αποκτήσει πρόσβαση στην παρουσία για να κλέψει τα διαπιστευτήρια του ρόλου IAM από το σημείο μεταδεδομένων.
Πρόσβαση μέσω SSH
Εκτελέστε μια νέα παρουσία χρησιμοποιώντας ένα δημιουργημένο κλειδί ssh (--key-name
) και στη συνέχεια συνδεθείτε σε αυτήν μέσω ssh (αν θέλετε να δημιουργήσετε ένα νέο, μπορεί να χρειαστεί να έχετε την άδεια ec2:CreateKeyPair
).
Πρόσβαση μέσω rev shell στα δεδομένα χρήστη
Μπορείτε να εκτελέσετε μια νέα παρουσία χρησιμοποιώντας δεδομένα χρήστη (--user-data
) που θα σας στείλει ένα rev shell. Δεν χρειάζεται να καθορίσετε ομάδα ασφαλείας με αυτόν τον τρόπο.
Be careful with GuradDuty if you use the credentials of the IAM role outside of the instance:
AWS - GuardDuty EnumPotential Impact: Άμεση privesc σε οποιοδήποτε EC2 ρόλο συνδεδεμένο με υπάρχοντα προφίλ στιγμιότυπου.
Με αυτό το σύνολο δικαιωμάτων θα μπορούσατε επίσης να δημιουργήσετε μια EC2 στιγμή και να την καταχωρίσετε μέσα σε ένα ECS cluster. Με αυτόν τον τρόπο, οι υπηρεσίες του ECS θα εκτελούνται μέσα στην EC2 στιγμή όπου έχετε πρόσβαση και στη συνέχεια μπορείτε να διεισδύσετε σε αυτές τις υπηρεσίες (δοχεία docker) και να κλέψετε τους ρόλους ECS που είναι συνδεδεμένοι.
Για να μάθετε πώς να αναγκάσετε τις υπηρεσίες ECS να εκτελούνται σε αυτή τη νέα EC2 instance, ελέγξτε:
AWS - ECS PrivescΕάν δεν μπορείτε να δημιουργήσετε μια νέα instance αλλά έχετε την άδεια ecs:RegisterContainerInstance
, μπορεί να είστε σε θέση να καταχωρήσετε την instance μέσα στο cluster και να εκτελέσετε την σχολιασμένη επίθεση.
Πιθανές Επιπτώσεις: Άμεσο privesc σε ρόλους ECS που συνδέονται με εργασίες.
iam:PassRole
, iam:AddRoleToInstanceProfile
Παρόμοια με το προηγούμενο σενάριο, ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να αλλάξει τον IAM ρόλο μιας συμβιβασμένης instance ώστε να μπορέσει να κλέψει νέες διαπιστευτήρια.
Καθώς ένα instance profile μπορεί να έχει μόνο 1 ρόλο, εάν το instance profile έχει ήδη έναν ρόλο (συνηθισμένη περίπτωση), θα χρειαστεί επίσης iam:RemoveRoleFromInstanceProfile
.
Εάν το instance profile έχει ρόλο και ο επιτιθέμενος δεν μπορεί να τον αφαιρέσει, υπάρχει μια άλλη λύση. Μπορεί να βρει ένα instance profile χωρίς ρόλο ή να δημιουργήσει ένα νέο (iam:CreateInstanceProfile
), να προσθέσει τον ρόλο σε αυτό το instance profile (όπως συζητήθηκε προηγουμένως), και να συσχετίσει το instance profile που έχει παραβιαστεί με ένα παραβιασμένο instance:
Εάν το instance δεν έχει κανένα instance profile (ec2:AssociateIamInstanceProfile
) *
Πιθανές Επιπτώσεις: Άμεση εκμετάλλευση δικαιωμάτων σε διαφορετικό ρόλο EC2 (πρέπει να έχετε παραβιάσει μια AWS EC2 instance και κάποια επιπλέον δικαιώματα ή συγκεκριμένη κατάσταση προφίλ instance).
iam:PassRole
(( ec2:AssociateIamInstanceProfile
& ec2:DisassociateIamInstanceProfile
) || ec2:ReplaceIamInstanceProfileAssociation
)Με αυτά τα δικαιώματα είναι δυνατόν να αλλάξετε το προφίλ instance που σχετίζεται με μια 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
μπορεί να τροποποιήσει τα χαρακτηριστικά των instances. Μεταξύ αυτών, μπορεί να αλλάξει τα δεδομένα χρήστη, που σημαίνει ότι μπορεί να κάνει το instance να εκτελεί αυθαίρετα δεδομένα. Αυτό μπορεί να χρησιμοποιηθεί για να αποκτήσει μια rev shell στο EC2 instance.
Σημειώστε ότι τα χαρακτηριστικά μπορούν να τροποποιηθούν μόνο ενώ το instance είναι σταματημένο, οπότε οι άδειες ec2:StopInstances
και ec2:StartInstances
.
Πιθανές Επιπτώσεις: Άμεση εκμετάλλευση δικαιωμάτων σε οποιοδήποτε EC2 IAM Ρόλο συνδεδεμένο με μια δημιουργημένη παρουσία.
ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
,ec2:ModifyLaunchTemplate
Ένας επιτιθέμενος με τα δικαιώματα ec2:CreateLaunchTemplateVersion
,ec2:CreateLaunchTemplate
και ec2:ModifyLaunchTemplate
μπορεί να δημιουργήσει μια νέα έκδοση Launch Template με μια rev shell σε τα δεδομένα χρήστη και οποιονδήποτε EC2 IAM Ρόλο σε αυτό, να αλλάξει την προεπιλεγμένη έκδοση, και οποιαδήποτε ομάδα Autoscaler χρησιμοποιώντας αυτό το Launch Template που είναι ρυθμισμένο να χρησιμοποιεί την τελευταία ή την προεπιλεγμένη έκδοση θα ξανατρέξει τις παρουσίες χρησιμοποιώντας αυτό το πρότυπο και θα εκτελέσει την rev shell.
Πιθανές Επιπτώσεις: Άμεση εκμετάλλευση δικαιωμάτων σε διαφορετικό ρόλο EC2.
autoscaling:CreateLaunchConfiguration
, autoscaling:CreateAutoScalingGroup
, iam:PassRole
Ένας επιτιθέμενος με τα δικαιώματα autoscaling:CreateLaunchConfiguration
,autoscaling:CreateAutoScalingGroup
,iam:PassRole
μπορεί να δημιουργήσει μια Διαμόρφωση Εκκίνησης με έναν IAM Ρόλο και μια rev shell μέσα στα δεδομένα χρήστη, στη συνέχεια να δημιουργήσει μια ομάδα αυτόματης κλιμάκωσης από αυτή τη διαμόρφωση και να περιμένει την rev shell να κλέψει τον 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 για να την ενεργοποιήσει.
Για να συνδεθείτε στη σειριακή θύρα, πρέπει επίσης να γνωρίζετε το όνομα χρήστη και τον κωδικό πρόσβασης ενός χρήστη μέσα στη μηχανή.
Αυτή η μέθοδος δεν είναι πολύ χρήσιμη για privesc καθώς χρειάζεται να γνωρίζετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης για να την εκμεταλλευτείτε.
Πιθανές Επιπτώσεις: (Πολύ μη αποδεδειγμένο) Άμεσο privesc στους ρόλους IAM EC2 που είναι συνδεδεμένοι σε εκτελούμενες περιπτώσεις.
describe-launch-templates
,describe-launch-template-versions
Δεδομένου ότι τα πρότυπα εκκίνησης έχουν εκδόσεις, ένας επιτιθέμενος με δικαιώματα ec2:describe-launch-templates
και ec2:describe-launch-template-versions
θα μπορούσε να τα εκμεταλλευτεί για να ανακαλύψει ευαίσθητες πληροφορίες, όπως διαπιστευτήρια που υπάρχουν στα δεδομένα χρήστη. Για να το επιτύχει αυτό, το παρακάτω σενάριο επαναλαμβάνει όλες τις εκδόσεις των διαθέσιμων προτύπων εκκίνησης:
Στις παραπάνω εντολές, αν και καθορίζουμε ορισμένα μοτίβα (aws_|password|token|api
), μπορείτε να χρησιμοποιήσετε μια διαφορετική regex για να αναζητήσετε άλλους τύπους ευαίσθητης πληροφορίας.
Υποθέτοντας ότι βρίσκουμε aws_access_key_id
και aws_secret_access_key
, μπορούμε να χρησιμοποιήσουμε αυτά τα διαπιστευτήρια για να αυθεντικοποιηθούμε στο AWS.
Πιθανές Επιπτώσεις: Άμεση κλιμάκωση προνομίων σε IAM χρήστη(ες).
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)