GCP - Non-svc Persistance
Te techniki są przydatne, gdy w jakiś sposób uzyskano dostęp do pewnych poświadczeń GCP lub maszyny działającej w środowisku GCP.
Przechwytywanie Tokenów
Tokeny Uwierzytelnionego Użytkownika
Aby uzyskać bieżący 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 tokenu dostępu, wykonaj:
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 przy użyciu tokena odświeżania, identyfikatora klienta i tajnego klienta, wykonaj:
Walidność tokenów odświeżania można zarządzać w Admin > Bezpieczeństwo > Kontrola sesji Google Cloud, a domyślnie ustawiona jest na 16 godzin, chociaż można ją ustawić na nigdy nie wygasa:
Przepływ autoryzacji
Przepływ autoryzacji podczas korzystania z czegoś takiego jak gcloud auth login
otworzy okno dialogowe w przeglądarce, a po zaakceptowaniu wszystkich zakresów przeglądarka wyśle żądanie takie jak to na port http otwarty przez narzędzie:
Następnie gcloud będzie używać stanu i kodu z pewnym hardcoded client_id
(32555940559.apps.googleusercontent.com
) i client_secret
(ZmssLNjJy2998hD4CTg2ejr2
) do uzyskania ostatecznych danych odświeżania tokenów.
Zauważ, że komunikacja z localhostem odbywa się za pomocą protokołu HTTP, więc istnieje możliwość przechwycenia danych w celu uzyskania tokenu odświeżania, jednak te dane są ważne tylko jeden raz, dlatego byłoby to bezużyteczne; łatwiej jest po prostu odczytać token odświeżania z pliku.
Zakresy OAuth
Wszystkie zakresy Google można znaleźć pod adresem https://developers.google.com/identity/protocols/oauth2/scopes lub uzyskać je wykonując:
Możliwe jest zobaczenie, jakie zakresy aplikacji używanej do uwierzytelniania przez gcloud
mogą być obsługiwane za pomocą tego skryptu:
Po wykonaniu sprawdzono, że ta aplikacja obsługuje następujące zakresy:
Konta usług
Tak jak w przypadku uwierzytelnionych użytkowników, jeśli uda ci się skompromitować plik klucza prywatnego konta usługi, będziesz mógł uzyskać do niego dostęp zazwyczaj tak długo, jak chcesz. Jednakże, jeśli ukradniesz token OAuth konta usługi, może to być jeszcze bardziej interesujące, ponieważ nawet jeśli domyślnie te tokeny są przydatne tylko przez godzinę, jeśli ofiara usunie prywatny klucz API, token OAuh będzie wciąż ważny do momentu wygaśnięcia.
Metadane
Oczywiście, dopóki znajdujesz się w maszynie działającej w środowisku GCP, będziesz mógł uzyskać dostęp do konta usługi przypisanego do tej maszyny, kontaktując się z końcowym punktem metadanych (zauważ, że tokeny Oauth, do których możesz uzyskać dostęp w tym punkcie końcowym, zazwyczaj są ograniczone przez zakresy).
Naprawy
Niektóre naprawy dla tych technik są wyjaśnione w https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Referencje
Last updated