GCP - Token Persistance
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)
Um das aktuelle Token eines Benutzers zu erhalten, können Sie Folgendes ausführen:
Überprüfen Sie auf dieser Seite, wie Sie dieses Token direkt mit gcloud verwenden:
Um die Details zur Generierung eines neuen Zugriffstokens zu erhalten, führen Sie aus:
Es ist auch möglich, Refresh-Token in $HOME/.config/gcloud/application_default_credentials.json
und in $HOME/.config/gcloud/legacy_credentials/*/adc.json
zu finden.
Um ein neues aktualisiertes Zugriffstoken mit dem Refresh-Token, der Client-ID und dem Client-Secret zu erhalten, führen Sie aus:
Die Gültigkeit der Aktualisierungstoken kann in Admin > Sicherheit > Google Cloud-Sitzungskontrolle verwaltet werden, und standardmäßig ist sie auf 16 Stunden eingestellt, obwohl sie so konfiguriert werden kann, dass sie niemals abläuft:
Der Authentifizierungsfluss bei der Verwendung von etwas wie gcloud auth login
öffnet ein Eingabeaufforderung im Browser, und nachdem alle Berechtigungen akzeptiert wurden, sendet der Browser eine Anfrage wie diese an den von dem Tool geöffneten HTTP-Port:
Dann wird gcloud den Zustand und den Code mit einer fest codierten client_id
(32555940559.apps.googleusercontent.com
) und client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) verwenden, um die finalen Refresh-Token-Daten zu erhalten.
Beachten Sie, dass die Kommunikation mit localhost über HTTP erfolgt, sodass es möglich ist, die Daten abzufangen, um ein Refresh-Token zu erhalten. Diese Daten sind jedoch nur 1 Mal gültig, daher wäre dies nutzlos; es ist einfacher, das Refresh-Token aus der Datei zu lesen.
Sie finden alle Google-Bereiche unter https://developers.google.com/identity/protocols/oauth2/scopes oder erhalten sie, indem Sie ausführen:
Es ist möglich zu sehen, welche Scopes die Anwendung, die gcloud
zur Authentifizierung verwendet, unterstützen kann, mit diesem Skript:
Nach der Ausführung wurde überprüft, dass diese App diese Scopes unterstützt:
es ist interessant zu sehen, wie diese App den drive
Scope unterstützt, der es einem Benutzer ermöglichen könnte, von GCP zu Workspace zu eskalieren, wenn es einem Angreifer gelingt, den Benutzer zu zwingen, ein Token mit diesem Scope zu generieren.
Überprüfen Sie, wie Sie das hier ausnutzen können.
Genau wie bei authentifizierten Benutzern, wenn Sie es schaffen, die private Schlüsseldatei eines Dienstkontos zu kompromittieren, können Sie in der Regel so lange darauf zugreifen, wie Sie möchten. Wenn Sie jedoch das OAuth-Token eines Dienstkontos stehlen, kann das sogar noch interessanter sein, denn selbst wenn diese Tokens standardmäßig nur eine Stunde lang nützlich sind, bleibt das OAuth-Token gültig, bis es abläuft, wenn das Opfer den privaten API-Schlüssel löscht.
Offensichtlich können Sie, solange Sie sich in einer Maschine im GCP-Umfeld befinden, auf das Dienstkonto zugreifen, das mit dieser Maschine verbunden ist, indem Sie den Metadaten-Endpunkt kontaktieren (beachten Sie, dass die Oauth-Tokens, auf die Sie in diesem Endpunkt zugreifen können, normalerweise durch Scopes eingeschränkt sind).
Einige Abhilfemaßnahmen für diese Techniken sind in https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2 erklärt.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)