AWS - EKS Post Exploitation
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)
Για περισσότερες πληροφορίες ελέγξτε
AWS - EKS EnumΕάν έχετε την άδεια eks:AccessKubernetesApi
μπορείτε να δείτε τα αντικείμενα Kubernetes μέσω της κονσόλας AWS EKS (Μάθετε περισσότερα).
Easy way:
Όχι τόσο εύκολος τρόπος:
Αν μπορείτε να πάρετε ένα token με aws eks get-token --name <cluster_name>
αλλά δεν έχετε δικαιώματα για να πάρετε πληροφορίες για το cluster (describeCluster), μπορείτε να ετοιμάσετε το δικό σας ~/.kube/config
. Ωστόσο, έχοντας το token, χρειάζεστε ακόμα το url endpoint για να συνδεθείτε (αν καταφέρατε να πάρετε ένα JWT token από ένα pod διαβάστε εδώ) και το όνομα του cluster.
Στην περίπτωσή μου, δεν βρήκα τις πληροφορίες στα CloudWatch logs, αλλά τις βρήκα στα LaunchTemplates userData και σε μηχανές EC2 στο userData επίσης. Μπορείτε να δείτε αυτές τις πληροφορίες στο userData εύκολα, για παράδειγμα στο επόμενο παράδειγμα (το όνομα του cluster ήταν cluster-name):
Ο δημιουργός του EKS cluster θα είναι ΠΑΝΤΑ σε θέση να εισέλθει στο μέρος του kubernetes cluster της ομάδας system:masters
(k8s admin). Στη στιγμή που γράφεται αυτό το κείμενο, δεν υπάρχει άμεσος τρόπος να βρείτε ποιος δημιούργησε το cluster (μπορείτε να ελέγξετε το CloudTrail). Και δεν υπάρχει τρόπος να αφαιρεθεί αυτό το προνόμιο.
Ο τρόπος για να παραχωρήσετε πρόσβαση σε περισσότερους χρήστες ή ρόλους AWS IAM στο K8s είναι χρησιμοποιώντας το configmap aws-auth
.
Επομένως, οποιοσδήποτε έχει δικαίωμα εγγραφής πάνω στο config map aws-auth
θα είναι σε θέση να συμβιβάσει ολόκληρο το cluster.
Για περισσότερες πληροφορίες σχετικά με το πώς να παραχωρήσετε επιπλέον προνόμια σε ρόλους & χρήστες IAM στην ίδια ή διαφορετική λογαριασμό και πώς να καταχραστείτε αυτό για privesc ελέγξτε αυτή τη σελίδα.
Ελέγξτε επίσης αυτή την καταπληκτική ανάρτηση για να μάθετε πώς λειτουργεί η αυθεντικοποίηση IAM -> Kubernetes.
Είναι δυνατόν να επιτραπεί μια αυθεντικοποίηση OpenID για λογαριασμό υπηρεσίας kubernetes ώστε να μπορούν να αναλαμβάνουν ρόλους στο AWS. Μάθετε πώς λειτουργεί σε αυτή τη σελίδα.
Δεν βρήκα καμία τεκμηρίωση που να εξηγεί τα κριτήρια για τους 'δύο χαρακτήρες' και τον 'αριθμό'. Αλλά κάνοντας μερικές δοκιμές εκ μέρους μου, βλέπω ότι επαναλαμβάνονται οι εξής:
gr7
yl4
Ούτως ή άλλως, είναι μόνο 3 χαρακτήρες που μπορούμε να τους brute force. Χρησιμοποιήστε το παρακάτω σενάριο για να δημιουργήσετε τη λίστα.
Τότε με το wfuzz
Θυμηθείτε να αντικαταστήσετε & .
Εάν ένας επιτιθέμενος αποκτήσει διαπιστευτήρια ενός AWS με δικαιώματα σε ένα EKS. Εάν ο επιτιθέμενος ρυθμίσει το δικό του kubeconfig
(χωρίς να καλέσει update-kubeconfig
) όπως εξηγήθηκε προηγουμένως, το get-token
δεν δημιουργεί καταγραφές στο Cloudtrail επειδή δεν αλληλεπιδρά με το AWS API (απλώς δημιουργεί το token τοπικά).
Έτσι, όταν ο επιτιθέμενος επικοινωνεί με το EKS cluster, το cloudtrail δεν θα καταγράψει τίποτα σχετικό με τον χρήστη που έχει κλαπεί και την πρόσβαση σε αυτό.
Σημειώστε ότι το EKS cluster μπορεί να έχει ενεργοποιημένες καταγραφές που θα καταγράψουν αυτή την πρόσβαση (αν και, από προεπιλογή, είναι απενεργοποιημένες).
Από προεπιλογή, ο χρήστης ή ο ρόλος που δημιούργησε ένα cluster έχει ΠΑΝΤΑ δικαιώματα διαχειριστή πάνω στο cluster. Και ότι η μόνη "ασφαλής" πρόσβαση που θα έχει το AWS πάνω στο Kubernetes cluster.
Έτσι, εάν ένας επιτιθέμενος παραβιάσει ένα cluster χρησιμοποιώντας fargate και αφαιρέσει όλους τους άλλους διαχειριστές και διαγράψει τον χρήστη/ρόλο AWS που δημιούργησε το Cluster, ο επιτιθέμενος θα μπορούσε να έχει ζητήσει λύτρα για το cluster.
Σημειώστε ότι εάν το cluster χρησιμοποιούσε EC2 VMs, θα μπορούσε να είναι δυνατό να αποκτήσετε δικαιώματα διαχειριστή από το Node και να ανακτήσετε το cluster.
Στην πραγματικότητα, εάν το cluster χρησιμοποιεί Fargate, θα μπορούσατε να μεταφέρετε EC2 nodes ή να μεταφέρετε τα πάντα σε EC2 στο cluster και να το ανακτήσετε αποκτώντας πρόσβαση στα tokens στο node.
Αποκωδικοποιώντας το JWT token, αποκτούμε το cluster id & επίσης την περιοχή. Γνωρίζοντας ότι η τυπική μορφή για το EKS url είναι
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)