GCP - Token Persistance
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 generowania nowego tokena dostępu, uruchom:
Możliwe jest również znalezienie tokenów odświeżania w $HOME/.config/gcloud/application_default_credentials.json
oraz w $HOME/.config/gcloud/legacy_credentials/*/adc.json
.
Aby uzyskać nowy odświeżony token dostępu za pomocą tokena odświeżania, identyfikatora klienta i tajnego klucza klienta, 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 ustawić, aby nigdy nie wygasały:
Przepływ uwierzytelniania podczas korzystania z czegoś takiego jak gcloud auth login
otworzy okno w przeglądarce, a po zaakceptowaniu wszystkich zakresów przeglądarka wyśle żądanie takie jak to do portu http otwartego przez narzędzie:
Then, gcloud will use the state and code with a some hardcoded client_id
(32555940559.apps.googleusercontent.com
) and client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) to get the final refresh token data.
Zauważ, że komunikacja z localhostem odbywa się w HTTP, więc możliwe jest przechwycenie danych, aby uzyskać refresh token, jednak te dane są ważne tylko 1 raz, więc byłoby to bezużyteczne, łatwiej jest po prostu odczytać refresh token z pliku.
Możesz znaleźć wszystkie zakresy Google w https://developers.google.com/identity/protocols/oauth2/scopes lub uzyskać je, wykonując:
Można zobaczyć, które zakresy aplikacja, którą gcloud
używa do uwierzytelniania, może obsługiwać za pomocą tego skryptu:
Po wykonaniu tego sprawdzono, że ta aplikacja obsługuje te zakresy:
to interesujące, jak ta aplikacja obsługuje zakres drive
, co może pozwolić użytkownikowi na eskalację z GCP do Workspace, jeśli atakujący zdoła zmusić użytkownika do wygenerowania tokena z tym zakresem.
Sprawdź, jak nadużyć to tutaj.
Podobnie jak w przypadku uwierzytelnionych użytkowników, jeśli uda ci się skompromitować plik klucza prywatnego konta serwisowego, będziesz mógł uzyskać do niego dostęp zazwyczaj tak długo, jak chcesz. Jednak jeśli ukradniesz token OAuth konta serwisowego, może to być jeszcze bardziej interesujące, ponieważ, nawet jeśli domyślnie te tokeny są użyteczne tylko przez godzinę, jeśli ofiara usunie klucz API, token OAuth będzie nadal ważny aż do wygaśnięcia.
Oczywiście, tak długo jak jesteś w maszynie działającej w środowisku GCP, będziesz mógł uzyskać dostęp do konta serwisowego przypisanego do tej maszyny, kontaktując się z punktem końcowym metadanych (zauważ, że tokeny OAuth, do których możesz uzyskać dostęp w tym punkcie końcowym, są zazwyczaj ograniczone przez zakresy).
Niektóre remediacje dla tych technik są wyjaśnione w https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)