GCP - Non-svc Persistance
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Są to przydatne techniki, gdy w jakiś sposób przejąłeś jakieś poświadczenia GCP lub maszynę działającą w środowisku GCP.
Token Hijacking
Authenticated User Tokens
Aby uzyskać aktualny token użytkownika, możesz uruchomić:
Sprawdź na tej stronie, jak bezpośrednio użyć tego tokena za pomocą gcloud:
Aby uzyskać szczegóły dotyczące wygenerowania nowego tokena dostępu, uruchom:
Możliwe jest również znalezienie refresh tokens w $HOME/.config/gcloud/application_default_credentials.json
oraz w $HOME/.config/gcloud/legacy_credentials/*/adc.json
.
Aby uzyskać nowy odświeżony access token za pomocą refresh token, client ID i client secret, uruchom:
Ważność tokenów odświeżania można zarządzać w Admin > Security > Google Cloud session control, a domyślnie jest ustawiona na 16h, chociaż można ją ustawić na nigdy nie wygasa:
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F344535904-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F0FSPLXBcKDEfL2bo2i3t%252Fuploads%252Fgit-blob-c7824715e776ef068e243888c58c0b82eb1407fb%252Fimage%2520%2811%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a7853bf2&sv=1)
Auth flow
Przepływ uwierzytelniania podczas używania czegoś takiego jak gcloud auth login
otworzy monit w przeglądarce, a po zaakceptowaniu wszystkich zakresów przeglądarka wyśle żądanie takie jak to do portu http otwartego przez narzędzie:
Następnie, gcloud użyje stanu i kodu z pewnym zakodowanym na stałe client_id
(32555940559.apps.googleusercontent.com
) oraz client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) aby uzyskać ostateczne dane tokena odświeżania.
Należy zauważyć, że komunikacja z localhost odbywa się przez HTTP, więc możliwe jest przechwycenie danych w celu uzyskania tokena odświeżania, jednak te dane są ważne tylko raz, więc byłoby to bezużyteczne, łatwiej jest po prostu odczytać token odświeżania z pliku.
OAuth Scopes
Możesz znaleźć wszystkie zakresy Google na https://developers.google.com/identity/protocols/oauth2/scopes lub uzyskać je wykonując:
Możliwe jest sprawdzenie, które zakresy aplikacja używana przez gcloud
do uwierzytelniania może obsługiwać za pomocą tego skryptu:
Po wykonaniu sprawdzono, że ta aplikacja obsługuje te zakresy:
it's interesting to see how this app supports the drive
scope, which could allow a user to escalate from GCP to Workspace if an attacker manages to force the user to generate a token with this scope.
Check how to abuse this here.
Service Accounts
Just like with authenticated users, if you manage to compromise the private key file of a service account you will be able to access it usually as long as you want. However, if you steal the OAuth token of a service account this can be even more interesting, because, even if by default these tokens are useful just for an hour, if the victim deletes the private api key, the OAuh token will still be valid until it expires.
Metadata
Obviously, as long as you are inside a machine running in the GCP environment you will be able to access the service account attached to that machine contacting the metadata endpoint (note that the Oauth tokens you can access in this endpoint are usually restricted by scopes).
Remediations
Some remediations for these techniques are explained in https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated