AWS - EKS Post Exploitation
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Informationen siehe
AWS - EKS EnumWenn Sie die Berechtigung eks:AccessKubernetesApi
haben, können Sie Kubernetes-Objekte über die AWS EKS-Konsole anzeigen (Erfahren Sie mehr).
Einfache Methode:
Nicht so einfacher Weg:
Wenn Sie ein Token erhalten können mit aws eks get-token --name <cluster_name>
, aber keine Berechtigungen haben, um Cluster-Informationen abzurufen (describeCluster), könnten Sie Ihre eigene ~/.kube/config
vorbereiten. Allerdings benötigen Sie mit dem Token immer noch den URL-Endpunkt, um sich zu verbinden (wenn Sie es geschafft haben, ein JWT-Token von einem Pod zu erhalten, lesen Sie hier) und den Namen des Clusters.
In meinem Fall habe ich die Informationen nicht in den CloudWatch-Protokollen gefunden, aber ich fand sie in den LaunchTemplates userData und in EC2-Maschinen in userData ebenfalls. Sie können diese Informationen in userData leicht sehen, zum Beispiel im nächsten Beispiel (der Clustername war cluster-name):
Der Ersteller des EKS-Clusters wird IMMER in der Lage sein, in den Kubernetes-Cluster-Bereich der Gruppe system:masters
(k8s-Admin) zu gelangen. Zum Zeitpunkt des Schreibens gibt es keinen direkten Weg, um herauszufinden, wer den Cluster erstellt hat (Sie können CloudTrail überprüfen). Und es gibt keinen Weg, um dieses Privileg zu entfernen.
Der Weg, um Zugriff auf K8s für weitere AWS IAM-Benutzer oder -Rollen zu gewähren, ist die Verwendung des Configmaps aws-auth
.
Daher wird jeder mit Schreibzugriff auf die Configmap aws-auth
in der Lage sein, den gesamten Cluster zu kompromittieren.
Für weitere Informationen darüber, wie man zusätzliche Berechtigungen für IAM-Rollen & -Benutzer im gleichen oder unterschiedlichen Konto gewährt und wie man dies ausnutzen kann, prüfen Sie diese Seite.
Überprüfen Sie auch diesen großartigen Beitrag, um zu erfahren, wie die Authentifizierung IAM -> Kubernetes funktioniert.
Es ist möglich, eine OpenID-Authentifizierung für Kubernetes-Dienstkonten zuzulassen, um ihnen zu ermöglichen, Rollen in AWS zu übernehmen. Erfahren Sie, wie das auf dieser Seite funktioniert.
Durch das Dekodieren des JWT-Tokens erhalten wir die Cluster-ID und auch die Region. Dabei ist das Standardformat für die EKS-URL
Fand keine Dokumentation, die die Kriterien für die 'zwei Zeichen' und die 'Zahl' erklärt. Aber bei einigen Tests, die ich durchgeführt habe, sehe ich, dass diese wiederkehrend sind:
gr7
yl4
Jedenfalls sind es nur 3 Zeichen, die wir bruteforcen können. Verwende das folgende Skript, um die Liste zu generieren.
Dann mit wfuzz
Denken Sie daran, & zu ersetzen.
Wenn ein Angreifer die Anmeldeinformationen eines AWS mit Berechtigungen über ein EKS erhält. Wenn der Angreifer seine eigene kubeconfig
konfiguriert (ohne update-kubeconfig
aufzurufen), wie zuvor erklärt, generiert get-token
keine Protokolle in CloudTrail, da es nicht mit der AWS API interagiert (es erstellt das Token nur lokal).
Wenn der Angreifer also mit dem EKS-Cluster kommuniziert, wird CloudTrail nichts protokollieren, das mit dem gestohlenen Benutzer und dem Zugriff darauf zu tun hat.
Beachten Sie, dass der EKS-Cluster möglicherweise Protokolle aktiviert hat, die diesen Zugriff protokollieren (obwohl sie standardmäßig deaktiviert sind).
Standardmäßig hat der Benutzer oder die Rolle, die einen Cluster erstellt, IMMER Administratorrechte über den Cluster. Und das ist der einzige "sichere" Zugriff, den AWS über den Kubernetes-Cluster hat.
Wenn also ein Angreifer einen Cluster mit Fargate kompromittiert und alle anderen Administratoren entfernt und den AWS-Benutzer/die Rolle, die den Cluster erstellt hat, löscht, könnte der Angreifer den Cluster erpresst haben.
Beachten Sie, dass, wenn der Cluster EC2-VMs verwendet, es möglich sein könnte, Administratorrechte von dem Knoten zu erhalten und den Cluster wiederherzustellen.
Tatsächlich, wenn der Cluster Fargate verwendet, könnten Sie EC2-Knoten oder alles zu EC2 in den Cluster verschieben und ihn wiederherstellen, indem Sie auf die Tokens im Knoten zugreifen.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)