GCP - local privilege escalation ssh pivoting

Zacznij od zera i stań się ekspertem w hakowaniu AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

W tym scenariuszu zakładamy, że skompromitowano konto bez uprawnień wewnątrz maszyny wirtualnej w projekcie Compute Engine.

Niesamowicie, uprawnienia GPC maszyny wirtualnej, którą skompromitowano, mogą pomóc ci zwiększyć lokalne uprawnienia wewnątrz maszyny. Nawet jeśli nie zawsze jest to bardzo pomocne w środowisku chmurowym, dobrze wiedzieć, że jest to możliwe.

Przeczytaj skrypty

Instancje obliczeniowe prawdopodobnie są tam, aby wykonywać pewne skrypty w celu wykonywania działań za pomocą swoich kont usług.

Ponieważ IAM jest bardzo szczegółowe, konto może mieć uprawnienia do odczytu/zapisu zasobu, ale brak uprawnień do listowania.

Doskonałym hipotetycznym przykładem jest Instancja Obliczeniowa, która ma uprawnienie do odczytu/zapisu kopii zapasowych w kubełku magazynu o nazwie instance82736-long-term-xyz-archive-0332893.

Uruchomienie polecenia gsutil ls z wiersza poleceń nie zwraca nic, ponieważ konto usługi nie ma uprawnienia IAM storage.buckets.list. Jednakże, jeśli uruchomisz gsutil ls gs://instance82736-long-term-xyz-archive-0332893, możesz znaleźć kompletną kopię zapasową systemu plików, dając ci dostęp do danych w postaci tekstu jawnego, do których twoje lokalne konto Linux nie ma dostępu.

Możesz znaleźć nazwę tego kubełka wewnątrz skryptu (w bashu, Pythonie, Ruby...).

Niestandardowe metadane

Administratorzy mogą dodać niestandardowe metadane na poziomie instancji i projektu. Jest to po prostu sposób przekazywania dowolnych par klucz/wartość do instancji i jest często używany do zmiennych środowiskowych oraz skryptów uruchamiania/zamykania.

Co więcej, można dodać dane użytkownika, czyli skrypt, który będzie wykonywany za każdym razem, gdy maszyna jest uruchamiana lub restartowana i który można uzyskać również z punktu końcowego metadanych.

Aby uzyskać więcej informacji, sprawdź:

Wykorzystywanie uprawnień IAM

Większość proponowanych uprawnień jest przyznawana domyślnemu SA obliczeniowemu, jedynym problemem jest to, że domyślny zakres dostępu uniemożliwia SA ich użycie. Jednakże, jeśli jest włączony zakres cloud-platform lub tylko zakres compute, będziesz mógł je wykorzystać.

Sprawdź następujące uprawnienia:

Sprawdź klucze w systemie plików

Sprawdź, czy inni użytkownicy zalogowali się do gcloud wewnątrz maszyny i pozostawili swoje poświadczenia w systemie plików:

sudo find / -name "gcloud"

Oto najbardziej interesujące pliki:

  • ~/.config/gcloud/credentials.db

  • ~/.config/gcloud/legacy_credentials/[KONTO]/adc.json

  • ~/.config/gcloud/legacy_credentials/[KONTO]/.boto

  • ~/.credentials.json

Więcej wyrażeń regularnych kluczy API

TARGET_DIR="/path/to/whatever"

# Service account keys
grep -Pzr "(?s){[^{}]*?service_account[^{}]*?private_key.*?}" \
"$TARGET_DIR"

# Legacy GCP creds
grep -Pzr "(?s){[^{}]*?client_id[^{}]*?client_secret.*?}" \
"$TARGET_DIR"

# Google API keys
grep -Pr "AIza[a-zA-Z0-9\\-_]{35}" \
"$TARGET_DIR"

# Google OAuth tokens
grep -Pr "ya29\.[a-zA-Z0-9_-]{100,200}" \
"$TARGET_DIR"

# Generic SSH keys
grep -Pzr "(?s)-----BEGIN[ A-Z]*?PRIVATE KEY[a-zA-Z0-9/\+=\n-]*?END[ A-Z]*?PRIVATE KEY-----" \
"$TARGET_DIR"

# Signed storage URLs
grep -Pir "storage.googleapis.com.*?Goog-Signature=[a-f0-9]+" \
"$TARGET_DIR"

# Signed policy documents in HTML
grep -Pzr '(?s)<form action.*?googleapis.com.*?name="signature" value=".*?">' \
"$TARGET_DIR"

Odnośniki

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated