GCP - Privilege Escalation

Unterstützen Sie HackTricks

Einführung in die GCP-Privilege-Eskalation

GCP hat wie jede andere Cloud einige Prinzipale: Benutzer, Gruppen und Dienstkonten, und einige Ressourcen wie Compute Engine, Cloud Functions... Dann werden über Rollen Berechtigungen für diese Prinzipale über die Ressourcen erteilt. Dies ist die Art und Weise, die Berechtigungen eines Prinzips über eine Ressource in GCP anzugeben. Es gibt bestimmte Berechtigungen, die einem Benutzer erlauben, noch mehr Berechtigungen für die Ressource oder Drittanbieterressourcen zu erhalten, und das wird als Privilege Escalation bezeichnet (auch das Ausnutzen von Schwachstellen, um mehr Berechtigungen zu erhalten).

Daher möchte ich die GCP-Privilege-Eskalationstechniken in 2 Gruppen unterteilen:

  • Privesc auf ein Prinzipal: Dies wird es Ihnen ermöglichen, einen anderen Prinzipal zu verkörpern und daher mit all seinen Berechtigungen wie er zu handeln. z.B.: Missbrauch von getAccessToken um ein Dienstkonto zu verkörpern.

  • Privesc auf die Ressource: Dies wird es Ihnen ermöglichen, mehr Berechtigungen über die spezifische Ressource zu erhalten. z.B.: Sie können die setIamPolicy-Berechtigung über Cloud Functions missbrauchen, um die Funktion auszulösen.

  • Beachten Sie, dass einige Ressourcenberechtigungen es Ihnen auch erlauben, ein beliebiges Dienstkonto an die Ressource anzuhängen. Dies bedeutet, dass Sie eine Ressource mit einem SA starten, in die Ressource eintreten und das SA-Token stehlen können. Daher können Sie über eine Ressourcen-Eskalation zu einem Prinzipal eskalieren. Dies ist in mehreren Ressourcen zuvor passiert, aber jetzt ist es weniger häufig (kann aber immer noch passieren).

Offensichtlich sind die interessantesten Privilege-Eskalationstechniken diejenigen der zweiten Gruppe, weil sie es Ihnen ermöglichen, mehr Berechtigungen außerhalb der Ressourcen zu erhalten, über die Sie bereits einige Berechtigungen haben. Beachten Sie jedoch, dass das Eskalieren in Ressourcen Ihnen auch Zugriff auf sensible Informationen oder sogar auf andere Prinzipale geben kann (vielleicht durch das Lesen eines Geheimnisses, das ein Token eines SA enthält).

Es ist auch wichtig zu beachten, dass in GCP-Dienstkonten sowohl Prinzipale als auch Berechtigungen sind, daher ermöglicht das Eskalieren von Berechtigungen in einem SA auch, es zu verkörpern.

Die Berechtigungen in Klammern geben die Berechtigungen an, die benötigt werden, um die Schwachstelle mit gcloud auszunutzen. Diese sind möglicherweise nicht erforderlich, wenn sie über die API ausgenutzt werden.

Berechtigungen für die Privilege-Eskalationsmethodik

So teste ich spezifische Berechtigungen, um spezifische Aktionen in GCP durchzuführen.

  1. Laden Sie das Github-Repository https://github.com/carlospolop/gcp_privesc_scripts herunter.

  2. Fügen Sie im Ordner tests/ das neue Skript hinzu.

Umgehen von Zugriffsberechtigungen

Tokens von SA, die aus dem GCP-Metadatendienst durchgesickert sind, haben Zugriffsberechtigungen. Dies sind Einschränkungen für die Berechtigungen, die der Token hat. Wenn der Token z.B. den https://www.googleapis.com/auth/cloud-platform-Bereich hat, hat er vollen Zugriff auf alle GCP-Dienste. Wenn der Token jedoch den Bereich https://www.googleapis.com/auth/cloud-platform.read-only hat, hat er nur Lesezugriff auf alle GCP-Dienste, auch wenn das SA in IAM mehr Berechtigungen hat.

Es gibt keinen direkten Weg, um diese Berechtigungen zu umgehen, aber Sie könnten immer versuchen, nach neuen Anmeldeinformationen im kompromittierten Host zu suchen, den Service-Schlüssel zu finden, um ein OAuth-Token ohne Einschränkung zu generieren, oder zu einem anderen VM mit weniger Einschränkungen zu wechseln.

Wenn Zugriffsberechtigungen verwendet werden, wird das OAuth-Token, das für die Berechnungsinstanz (VM) generiert wird, eine Bereichseinschränkung enthalten. Möglicherweise können Sie jedoch diese Einschränkung umgehen und die Berechtigungen des kompromittierten Kontos ausnutzen.

Der beste Weg, um diese Einschränkung zu umgehen, besteht darin, entweder neue Anmeldeinformationen im kompromittierten Host zu finden, den Service-Schlüssel zu finden, um ein OAuth-Token ohne Einschränkung zu generieren, oder eine andere VM mit einem SA mit weniger Einschränkungen zu kompromittieren.

Überprüfen Sie SA mit generierten Schlüsseln mit:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

Techniken zur Privilegieneskalation

Der Weg, um Ihre Berechtigungen in AWS zu eskalieren, besteht darin, ausreichende Berechtigungen zu haben, um auf die Berechtigungen anderer Dienstkonten/Benutzer/Gruppen zugreifen zu können. Eskalationen verketten, bis Sie Admin-Zugriff auf die Organisation haben.

GCP hat hunderte (wenn nicht tausende) von Berechtigungen, die einer Entität gewährt werden können. In diesem Buch finden Sie alle Berechtigungen, die ich kenne, die Sie missbrauchen können, um Berechtigungen zu eskalieren, aber wenn Sie einen Weg kennen, der hier nicht erwähnt wird, teilen Sie ihn bitte.

Die Unterseiten dieses Abschnitts sind nach Diensten geordnet. Sie finden auf jedem Dienst verschiedene Möglichkeiten, Berechtigungen auf den Diensten zu eskalieren.

Missbrauch von GCP zur Eskalation von Berechtigungen lokal

Wenn Sie sich in einer Maschine in GCP befinden, könnten Sie Berechtigungen missbrauchen, um Berechtigungen sogar lokal zu eskalieren:

GCP - local privilege escalation ssh pivoting

Referenzen

Unterstützen Sie HackTricks

Last updated