Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε The PEASS Family, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Αυτή η άδεια επιτρέπει την συλλογή διαπιστευτηρίων για το Kubernetes cluster χρησιμοποιώντας κάτι όπως:
gcloud container clusters get-credentials <cluster_name> --zone <zone>
Χωρίς επιπλέον δικαιώματα, τα διαπιστευτήρια είναι αρκετά βασικά καθώς μπορείτε απλώς να καταλογογραφήσετε κάποιο πόρο, αλλά είναι χρήσιμα για να βρείτε λανθασμένες ρυθμίσεις στο περιβάλλον.
{% hint style="info" %} Σημειώστε ότι οι συστάδες Kubernetes μπορεί να έχουν ρυθμιστεί ως ιδιωτικές, πράγμα που θα απαγορεύει την πρόσβαση στον διακομιστή Kube-API από το Διαδίκτυο. {% endhint %}
Αν δεν έχετε αυτήν την άδεια, μπορείτε ακόμα να έχετε πρόσβαση στη συστάδα, αλλά χρειάζεστε να δημιουργήσετε το δικό σας αρχείο διαμόρφωσης kubectl με τις πληροφορίες των συστάδων. Ένα νεοδημιουργημένο αρχείο φαίνεται όπως αυτό:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMRENDQXBTZ0F3SUJBZ0lRRzNaQmJTSVlzeVRPR1FYODRyNDF3REFOQmdrcWhraUc5dzBCQVFzRkFEQXYKTVMwd0t3WURWUVFERXlRMk9UQXhZVEZoWlMweE56ZGxMVFF5TkdZdE9HVmhOaTAzWVdFM01qVmhNR05tTkdFdwpJQmNOTWpJeE1qQTBNakl4T1RJMFdoZ1BNakExTWpFeE1qWXlNekU1TWpSYU1DOHhMVEFyQmdOVkJBTVRKRFk1Ck1ERmhNV0ZsTFRFM04yVXROREkwWmkwNFpXRTJMVGRoWVRjeU5XRXdZMlkwWVRDQ0FhSXdEUVlKS29aSWh2Y04KQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQU00TWhGemJ3Y3VEQXhiNGt5WndrNEdGNXRHaTZmb0pydExUWkI4Rgo5TDM4a2V2SUVWTHpqVmtoSklpNllnSHg4SytBUHl4RHJQaEhXMk5PczFNMmpyUXJLSHV6M0dXUEtRUmtUWElRClBoMy9MMDVtbURwRGxQK3hKdzI2SFFqdkE2Zy84MFNLakZjRXdKRVhZbkNMMy8yaFBFMzdxN3hZbktwTWdKVWYKVnoxOVhwNEhvbURvOEhUN2JXUTJKWTVESVZPTWNpbDhkdDZQd3FUYmlLNjJoQzNRTHozNzNIbFZxaiszNy90RgpmMmVwUUdFOG90a0VVOFlHQ3FsRTdzaVllWEFqbUQ4bFZENVc5dk1RNXJ0TW8vRHBTVGNxRVZUSzJQWk1rc0hyCmMwbGVPTS9LeXhnaS93TlBRdW5oQ2hnRUJIZTVzRmNxdmRLQ1pmUFovZVI1Qk0vc0w1WFNmTE9sWWJLa2xFL1YKNFBLNHRMVmpiYVg1VU9zMUZIVXMrL3IyL1BKQ2hJTkRaVTV2VjU0L1c5NWk4RnJZaUpEYUVGN0pveXJvUGNuMwpmTmNjQ2x1eGpOY1NsZ01ISGZKRzZqb0FXLzB0b2U3ek05RHlQOFh3NW44Zm5lQm5aVTFnYXNKREZIYVlZbXpGCitoQzFETmVaWXNibWNxOGVPVG9LOFBKRjZ3SURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQWdRd0R3WUQKVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVU5UkhvQXlxY3RWSDVIcmhQZ1BjYzF6Sm9kWFV3RFFZSgpLb1pJaHZjTkFRRUxCUUFEZ2dHQkFLbnp3VEx0QlJBVE1KRVB4TlBNbmU2UUNqZDJZTDgxcC9oeVc1eWpYb2w5CllkMTRRNFVlVUJJVXI0QmJadzl0LzRBQ3ZlYUttVENaRCswZ2wyNXVzNzB3VlFvZCtleVhEK2I1RFBwUUR3Z1gKbkJLcFFCY1NEMkpvZ29tT3M3U1lPdWVQUHNrODVvdWEwREpXLytQRkY1WU5ublc3Z1VLT2hNZEtKcnhuYUVGZAprVVl1TVdPT0d4U29qVndmNUsyOVNCbGJ5YXhDNS9tOWkxSUtXV2piWnZPN0s4TTlYLytkcDVSMVJobDZOSVNqCi91SmQ3TDF2R0crSjNlSjZneGs4U2g2L28yRnhxZWFNdDladWw4MFk4STBZaGxXVmlnSFMwZmVBUU1NSzUrNzkKNmozOWtTZHFBYlhPaUVOMzduOWp2dVlNN1ZvQzlNUk1oYUNyQVNhR2ZqWEhtQThCdlIyQW5iQThTVGpQKzlSMQp6VWRpK3dsZ0V4bnFvVFpBcUVHRktuUTlQcjZDaDYvR0xWWStqYXhuR3lyUHFPYlpNZTVXUDFOUGs4NkxHSlhCCjc1elFvanEyRUpxanBNSjgxT0gzSkxOeXRTdmt4UDFwYklxTzV4QUV0OWxRMjh4N28vbnRuaWh1WmR6M0lCRU8KODdjMDdPRGxYNUJQd0hIdzZtKzZjUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://34.123.141.28
name: gke_security-devbox_us-central1_autopilot-cluster-1
contexts:
- context:
cluster: gke_security-devbox_us-central1_autopilot-cluster-1
user: gke_security-devbox_us-central1_autopilot-cluster-1
name: gke_security-devbox_us-central1_autopilot-cluster-1
current-context: gke_security-devbox_us-central1_autopilot-cluster-1
kind: Config
preferences: {}
users:
- name: gke_security-devbox_us-central1_autopilot-cluster-1
user:
auth-provider:
config:
access-token: <access token>
cmd-args: config config-helper --format=json
cmd-path: gcloud
expiry: "2022-12-06T01:13:11Z"
expiry-key: '{.credential.token_expiry}'
token-key: '{.credential.access_token}'
name: gcp
Το Kubernetes από προεπιλογή αποτρέπει τους χρήστες από το να μπορούν να δημιουργήσουν ή ενημερώσουν Roles και ClusterRoles με περισσότερες άδειες από αυτές που έχει ο χρήστης. Ωστόσο, ένας χρήστης του GCP με αυτές τις άδειες θα μπορεί να δημιουργήσει/ενημερώσει Roles/ClusterRoles με περισσότερες άδειες από αυτές που διαθέτει, παρακάμπτοντας αποτελεσματικά την προστασία του Kubernetes έναντι αυτής της συμπεριφοράς.
Οι άδειες container.roles.create
και/ή container.roles.update
Ή container.clusterRoles.create
και/ή container.clusterRoles.update
αντίστοιχα είναι επίσης απαραίτητες για την εκτέλεση αυτών των ενεργειών προϋπόθεσης προνομιούχου προαγωγής.
Το Kubernetes από προεπιλογή αποτρέπει τους χρήστες από το να μπορούν να δημιουργήσουν ή ενημερώσουν RoleBindings και ClusterRoleBindings για να δώσουν περισσότερες άδειες από αυτές που έχει ο χρήστης. Ωστόσο, ένας χρήστης του GCP με αυτές τις άδειες θα μπορεί να δημιουργήσει/ενημερώσει RoleBindings/ClusterRoleBindings με περισσότερες άδειες από αυτές που διαθέτει, παρακάμπτοντας αποτελεσματικά την προστασία του Kubernetes έναντι αυτής της συμπεριφοράς.
Οι άδειες container.roleBindings.create
και/ή container.roleBindings.update
Ή container.clusterRoleBindings.create
και/ή container.clusterRoleBindings.update
αντίστοιχα είναι επίσης απαραίτητες για την εκτέλεση αυτών των ενεργειών προϋπόθεσης προνομιούχου προαγωγής.
container.cronJobs.create
| container.cronJobs.update
| container.daemonSets.create
| container.daemonSets.update
| container.deployments.create
| container.deployments.update
| container.jobs.create
| container.jobs.update
| container.pods.create
| container.pods.update
| container.replicaSets.create
| container.replicaSets.update
| container.replicationControllers.create
| container.replicationControllers.update
| container.scheduledJobs.create
| container.scheduledJobs.update
| container.statefulSets.create
| container.statefulSets.update
Όλες αυτές οι άδειες θα σας επιτρέψουν να δημιουργήσετε ή να ενημερώσετε ένα πόρο όπου μπορείτε να ορίσετε ένα pod. Ορίζοντας ένα pod μπορείτε να καθορίσετε τον SA που θα είναι συνδεδεμένος και την εικόνα που θα εκτελεστεί, επομένως μπορείτε να εκτελέσετε μια εικόνα που θα διαρρεύσει το token του SA στον διακομιστή σας, επιτρέποντάς σας να προωθηθείτε σε οποιοδήποτε λογαριασμό υπηρεσίας.
Για περισσότερες πληροφορίες, ανατρέξτε στο:
Καθώς βρισκόμαστε σε ένα περιβάλλον GCP, θα μπορείτε επίσης να πάρετε τον GCP SA του nodepool από την υπηρεσία μεταδεδομένων και να αναβαθμίσετε τα προνόμια στο GCP (από προεπιλογή χρησιμοποιείται ο υπολογιστικός SA).
Με αυτές τις άδειες μπορείτε να διαβάσετε τα tokens όλων των SAs του Kubernetes, επομένως μπορείτε να προωθηθείτε σε αυτά.
Με αυτήν την άδεια θα μπορείτε να εκτελέσετε εντολές στα pods, πράγμα που σας δίνει πρόσβαση σε όλα τα Kubernetes SAs που εκτελούνται στα pods για να αναβαθμίσετε τα προνόμια εντός του K8s, αλλά επίσης θα μπορείτε να κλέψετε το GCP Service Account του NodePool, ανεβάζοντας τα προνόμια στο GCP.
Όπως εξηγείται σε αυτήν τη σελίδα, με αυτές τις άδειες μπορείτε να έχετε πρόσβαση σε τοπικές υπηρεσίες που εκτελούνται σε pods που μπορεί να σας επιτρέψουν να αναβαθμίσετε προνόμια στο Kubernetes (και στο GCP αν καταφέρετε να επικοινωνήσετε με την υπηρεσία μεταδεδομένων).
Λόγω του ονόματος της άδειας, φαίνεται ότι θα σας επιτρέπει να δημιουργήσετε τα tokens των K8s Service Accounts, έτσι θα μπορείτε να αναβαθμίσετε τα προνόμια σε οποιοδήποτε SA μέσα στο Kubernetes. Ωστόσο, δεν μπόρεσα να βρω κανένα API endpoint για να το χρησιμοποιήσω, οπότε πείτε μου αν το βρείτε.
Αυτές οι άδειες μπορεί να σας επιτρέψουν να αναβαθμίσετε τα προνόμια στο Kubernetes, αλλά πιθανότερα μπορείτε να