GCP - Privilege Escalation

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Einführung in die GCP-Privilege-Eskalation

GCP hat wie jede andere Cloud einige Prinzipien: Benutzer, Gruppen und Dienstkonten sowie einige Ressourcen wie Compute Engine, Cloud-Funktionen... Dann werden über Rollen Berechtigungen für diese Prinzipien über die Ressourcen erteilt. Dies ist die Art und Weise, die Berechtigungen eines Prinzips für eine Ressource in GCP festzulegen. Bestimmte Berechtigungen ermöglichen es einem Benutzer, 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 ermöglicht es Ihnen, einen anderen Prinzipal zu impersonieren und daher mit all seinen Berechtigungen wie er zu handeln. z. B.: Missbrauch von getAccessToken zum Impersonieren eines Dienstkontos.

  • Privesc auf die Ressource: Dies ermöglicht es Ihnen, mehr Berechtigungen für die spezifische Ressource zu erhalten. z. B.: Sie können die setIamPolicy-Berechtigung bei Cloud-Funktionen missbrauchen, um die Funktion auszulösen.

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

Offensichtlich sind die interessantesten Privilege-Eskalationstechniken diejenigen der zweiten Gruppe, da sie es Ihnen ermöglichen, mehr Berechtigungen außerhalb der Ressourcen zu erhalten, für die Sie bereits einige Berechtigungen haben. Beachten Sie jedoch, dass die Eskalation in Ressourcen Ihnen auch Zugriff auf sensible Informationen oder sogar auf andere Prinzipale geben kann (vielleicht über 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. Das Eskalieren von Berechtigungen in einem SA ermöglicht es Ihnen daher auch, es zu impersonieren.

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

Berechtigungen für die Methodik der Privilege-Eskalation

So teste ich spezifische Berechtigungen, um bestimmte Aktionen in GCP auszufü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 geleakt wurden, haben Zugriffsberechtigungen. Dies sind Einschränkungen für die Berechtigungen, die der Token hat. Wenn der Token z. B. den Bereich https://www.googleapis.com/auth/cloud-platform 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 springen.

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 zu eskalieren.

Missbrauch von GCP zur lokalen Eskalation von Berechtigungen

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

pageGCP - local privilege escalation ssh pivoting

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated