GCP - Storage Enum

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Speicher

Google Cloud Platform (GCP) Storage ist eine cloud-basierte Speicherlösung, die hochdauerhaften und verfügbaren Objektspeicher für unstrukturierte Daten bietet. Es bietet verschiedene Speicherklassen basierend auf Leistung, Verfügbarkeit und Kosten, einschließlich Standard, Nearline, Coldline und Archive. GCP Storage bietet auch erweiterte Funktionen wie Lebenszyklusrichtlinien, Versionierung und Zugriffskontrolle, um Daten effektiv zu verwalten und zu sichern.

Der Bucket kann in einer Region, in 2 Regionen oder Multi-Region (Standard) gespeichert werden.

Speichertypen

  • Standard-Speicher: Dies ist die Standard-Speicheroption, die einen leistungsstarken, latenzarmen Zugriff auf häufig abgerufene Daten bietet. Es eignet sich für eine Vielzahl von Anwendungsfällen, einschließlich Bereitstellung von Website-Inhalten, Streaming-Medien und Hosting von Datenanalyse-Pipelines.

  • Nearline-Speicher: Diese Speicherkategorie bietet niedrigere Speicherkosten und etwas höhere Zugriffskosten als Standard-Speicher. Es ist optimiert für selten abgerufene Daten, mit einer Mindestspeicherdauer von 30 Tagen. Es eignet sich ideal für Backup- und Archivierungszwecke.

  • Coldline-Speicher: Diese Speicherkategorie ist optimiert für Langzeitspeicherung selten abgerufener Daten, mit einer Mindestspeicherdauer von 90 Tagen. Es bietet niedrigere Speicherkosten als Nearline-Speicher, aber mit höheren Zugriffskosten.

  • Archive-Speicher: Diese Speicherkategorie ist für kalte Daten konzipiert, die sehr selten abgerufen werden, mit einer Mindestspeicherdauer von 365 Tagen. Es bietet die niedrigsten Speicherkosten aller GCP-Speicheroptionen, aber mit den höchsten Zugriffskosten. Es eignet sich für die langfristige Aufbewahrung von Daten, die aus Compliance- oder regulatorischen Gründen gespeichert werden müssen.

  • Autoklasse: Wenn Sie nicht wissen, wie oft Sie auf die Daten zugreifen werden, können Sie Autoklasse auswählen, und GCP wird automatisch den Speichertyp ändern, um Kosten zu minimieren.

Zugriffskontrolle

Es wird standardmäßig empfohlen, den Zugriff über IAM zu steuern, aber es ist auch möglich, die Verwendung von ACLs zu aktivieren. Wenn Sie sich dafür entscheiden, nur IAM zu verwenden (Standard) und 90 Tage vergangen sind, können Sie ACLs nicht für den Bucket aktivieren.

Versionierung

Es ist möglich, die Versionierung zu aktivieren, dies wird alte Versionen der Datei im Bucket speichern. Es ist möglich, die Anzahl der Versionen, die Sie behalten möchten, zu konfigurieren und sogar wie lange Sie möchten, dass nicht aktuelle Versionen (alte Versionen) bestehen bleiben. Empfohlen sind 7 Tage für den Standardtyp.

Die Metadaten einer nicht aktuellen Version werden beibehalten. Darüber hinaus werden auch ACLs nicht aktueller Versionen beibehalten, sodass ältere Versionen möglicherweise unterschiedliche ACLs von der aktuellen Version haben.

Erfahren Sie mehr in der Dokumentation.

Aufbewahrungsrichtlinie

Geben Sie an, wie lange Sie die Löschung von Objekten im Bucket verbieten möchten (sehr nützlich für die Einhaltung von Vorschriften). Nur eine von Versionierung oder Aufbewahrungsrichtlinie kann gleichzeitig aktiviert sein.

Verschlüsselung

Standardmäßig werden Objekte mit von Google verwalteten Schlüsseln verschlüsselt, aber Sie könnten auch einen Schlüssel von KMS verwenden.

Öffentlicher Zugriff

Es ist möglich, externen Benutzern (angemeldet in GCP oder nicht) Zugriff auf den Inhalt von Buckets zu gewähren. Standardmäßig wird bei der Erstellung eines Buckets die Option, den Bucket öffentlich freizugeben, deaktiviert, aber mit ausreichenden Berechtigungen kann dies geändert werden.

Das Format einer URL zum Zugriff auf einen Bucket lautet https://storage.googleapis.com/<bucket-name> oder https://<bucket_name>.storage.googleapis.com (beide sind gültig).

HMAC-Schlüssel

Ein HMAC-Schlüssel ist ein Typ von Anmeldeinformation und kann mit einem Dienstkonto oder einem Benutzerkonto in Cloud Storage verknüpft werden. Sie verwenden einen HMAC-Schlüssel, um Signaturen zu erstellen, die dann in Anfragen an Cloud Storage enthalten sind. Signaturen zeigen, dass eine bestimmte Anfrage vom Benutzer oder Dienstkonto autorisiert ist.

HMAC-Schlüssel haben zwei Hauptbestandteile, eine Zugriffs-ID und ein Geheimnis.

  • Zugriffs-ID: Eine alphanumerische Zeichenfolge, die mit einem bestimmten Dienst- oder Benutzerkonto verknüpft ist. Wenn sie mit einem Dienstkonto verknüpft ist, beträgt die Zeichenfolge 61 Zeichen, und wenn sie mit einem Benutzerkonto verknüpft ist, beträgt die Zeichenfolge 24 Zeichen. Im Folgenden wird ein Beispiel für eine Zugriffs-ID gezeigt:

GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Geheimnis: Eine 40 Zeichen lange Base-64-codierte Zeichenfolge, die mit einer bestimmten Zugriffs-ID verknüpft ist. Ein Geheimnis ist ein vorab freigegebener Schlüssel, den nur Sie und Cloud Storage kennen. Sie verwenden Ihr Geheimnis, um Signaturen im Rahmen des Authentifizierungsprozesses zu erstellen. Im Folgenden wird ein Beispiel für ein Geheimnis gezeigt:

bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Sowohl die Zugriffs-ID als auch das Geheimnis identifizieren einen HMAC-Schlüssel eindeutig, aber das Geheimnis ist wesentlich sensiblere Information, da es verwendet wird, um Signaturen zu erstellen.

Enumeration

# List all storage buckets in project
gsutil ls

# Get each bucket configuration (protections, CLs, times, configs...)
gsutil ls -L

# List contents of a specific bucket
gsutil ls gs://bucket-name/
gsutil ls -r gs://bucket-name/ # Recursive
gsutil ls -a gs://bucket-name/ # Get ALL versions of objects

# Cat the context of a file without copying it locally
gsutil cat 'gs://bucket-name/folder/object'
gsutil cat 'gs://bucket-name/folder/object#<num>' # cat specific version

# Copy an object from the bucket to your local storage for review
gsutil cp gs://bucket-name/folder/object ~/

# List using a raw OAuth token
## Useful because "CLOUDSDK_AUTH_ACCESS_TOKEN" and "gcloud config set auth/access_token_file" doesn't work with gsutil
curl -H "Authorization: Bearer $TOKEN" "https://storage.googleapis.com/storage/v1/b/<storage-name>/o"
# Download file content from bucket
curl -H "Authorization: Bearer $TOKEN" "https://storage.googleapis.com/storage/v1/b/supportstorage-58249/o/flag.txt?alt=media" --output -

# Enumerate HMAC keys
gsutil hmac list

Wenn Sie beim Auflisten von Buckets einen Berechtigungsfehler erhalten, haben Sie möglicherweise immer noch Zugriff auf den Inhalt. Jetzt, da Sie über die Namenskonvention der Buckets Bescheid wissen, können Sie eine Liste möglicher Namen generieren und versuchen, auf sie zuzugreifen:

for i in $(cat wordlist.txt); do gsutil ls -r gs://"$i"; done

Mit den Berechtigungen storage.objects.list und storage.objects.get sollten Sie in der Lage sein, alle Ordner und Dateien aus dem Bucket aufzulisten, um sie herunterzuladen. Dies kann mit diesem Python-Skript erreicht werden:

import requests
import xml.etree.ElementTree as ET

def list_bucket_objects(bucket_name, prefix='', marker=None):
url = f"https://storage.googleapis.com/{bucket_name}?prefix={prefix}"
if marker:
url += f"&marker={marker}"
response = requests.get(url)
xml_data = response.content
root = ET.fromstring(xml_data)
ns = {'ns': 'http://doc.s3.amazonaws.com/2006-03-01'}
for contents in root.findall('.//ns:Contents', namespaces=ns):
key = contents.find('ns:Key', namespaces=ns).text
print(key)
next_marker = root.find('ns:NextMarker', namespaces=ns)
if next_marker is not None:
next_marker_value = next_marker.text
list_bucket_objects(bucket_name, prefix, next_marker_value)

list_bucket_objects('<storage-name>')

Privilege Escalation

Auf der folgenden Seite können Sie nachschauen, wie Sie Speicherberechtigungen missbrauchen, um Privilegien zu eskalieren:

pageGCP - Storage Privesc

Unauthenticated Enum

pageGCP - Storage Unauthenticated Enum

Post Exploitation

pageGCP - Storage Post Exploitation

Persistence

pageGCP - Storage Persistence
Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated