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:
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.
Zauważ, że komunikacja z localhostem odbywa się w HTTP, więc możliwe jest przechwycenie danych, aby uzyskać token odświeżania, jednak te dane są ważne tylko 1 raz, więc byłoby to bezużyteczne, łatwiej jest po prostu odczytać token odświeżania z pliku.
Wszystkie zakresy Google można znaleźć pod adresem 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 to nadużyć 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 prywatny klucz API, token OAuth będzie nadal ważny aż do wygaśnięcia.
Oczywiście, dopóki 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)