GCP - Storage Enum

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Berging

Google Cloud Platform (GCP) Berging is 'n wolkgebaseerde bergingsoplossing wat hoogs duursame en beskikbare objekbergings vir ongestruktureerde data bied. Dit bied verskeie bergingsklasse gebaseer op prestasie, beskikbaarheid en koste, insluitend Standaard, Nearline, Coldline, en Argief. GCP Berging bied ook gevorderde kenmerke soos lewensiklusbeleide, weergawes, en toegangsbeheer om data doeltreffend te bestuur en te beveilig.

Die emmer kan in 'n streek, in 2 streke of multi-streek (verstek) gestoor word.

Bergingstipes

  • Standaard Berging: Dit is die verstek bergingopsie wat hoë prestasie, lae-latensie toegang tot gereeld benaderde data bied. Dit is geskik vir 'n wye reeks gevalle, insluitend die bediening van webwerfinhoud, stroommedia, en die gasheer van data-analitiese pyplyne.

  • Nearline Berging: Hierdie bergingsklas bied laer bergingskoste en effens hoër toegangskoste as Standaard Berging. Dit is geoptimaliseer vir selde benaderde data, met 'n minimum bergingsduur van 30 dae. Dit is ideaal vir rugsteun- en argiefdoeleindes.

  • Coldline Berging: Hierdie bergingsklas is geoptimaliseer vir langtermyn berging van selde benaderde data, met 'n minimum bergingsduur van 90 dae. Dit bied die laer bergingskoste as Nearline Berging, maar met hoër toegangskoste.

  • Argief Berging: Hierdie bergingsklas is ontwerp vir koue data wat baie selde benader word, met 'n minimum bergingsduur van 365 dae. Dit bied die laagste bergingskoste van alle GCP-bergingsopsies maar met die hoogste toegangskoste. Dit is geskik vir langtermynbewaring van data wat vir nakomings- of regulatoriese redes gestoor moet word.

  • Outoklas: As jy nie weet hoeveel jy die data gaan benader nie kan jy Outoklas kies en GCP sal outomaties die tipe berging vir jou verander om koste te minimiseer.

Toegangsbeheer

Dit is verstek aanbeveel om die toegang te beheer via IAM, maar dit is ook moontlik om die gebruik van ACL's te aktiveer. As jy kies om slegs IAM te gebruik (verstek) en 90 dae verloop, sal jy nie in staat wees om ACL's te aktiveer vir die emmer nie.

Weergawes

Dit is moontlik om weergawes te aktiveer, dit sal ou weergawes van die lêer binne die emmer stoor. Dit is moontlik om die aantal weergawes wat jy wil behou te konfigureer en selfs hoe lank jy wil hê nie-huidige weergawes (ou weergawes) moet bly. Aanbeveel is 7 dae vir Standaard tipe.

Die metadata van 'n nie-huidige weergawe word behou. Verder word ACL's van nie-huidige weergawes ook behou, sodat ouer weergawes moontlik verskillende ACL's van die huidige weergawe kan hê.

Leer meer in die dokumente.

Bewaringsbeleid

Dui aan hoe lank jy wil die verwydering van Voorwerpe binne die emmer verbied (baie nuttig vir nakoming ten minste). Slegs een van weergawes of bewaringsbeleid kan gelyktydig geaktiveer word.

Versleuteling

Voorwerpe is verstek versleutel met Google-bestuurde sleutels, maar jy kan ook 'n sleutel van KMS gebruik.

Openbare Toegang

Dit is moontlik om eksterne gebruikers (ingeteken by GCP of nie) toegang tot emmerinhoud te gee. Verstek, wanneer 'n emmer geskep word, sal dit die opsie om die emmer openlik bloot te stel, afgeskakel hê, maar met genoegsame toestemmings kan dit verander word.

Die formaat van 'n URL om toegang tot 'n emmer te verkry is https://storage.googleapis.com/<emmer-naam> of https://<emmer_naam>.storage.googleapis.com (beide is geldig).

HMAC-sleutels

'n HMAC-sleutel is 'n tipe volmaggewysiging en kan geassosieer word met 'n diensrekening of 'n gebruikersrekening in Cloud Storage. Jy gebruik 'n HMAC-sleutel om handtekeninge te skep wat dan ingesluit word in versoeke aan Cloud Storage. Handtekeninge wys dat 'n spesifieke versoek deur die gebruiker of diensrekening geagoriseer is.

HMAC-sleutels het twee primêre dele, 'n toegangs-ID en 'n geheim.

  • Toegangs-ID: 'n alfanumeriese string wat gekoppel is aan 'n spesifieke diens of gebruikersrekening. Wanneer dit aan 'n diensrekening gekoppel is, is die string 61 karakters lank, en wanneer dit aan 'n gebruikersrekening gekoppel is, is die string 24 karakters lank. Die volgende toon 'n voorbeeld van 'n toegangs-ID:

GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Geheim: 'n 40-karakter Base-64 gekodeerde string wat gekoppel is aan 'n spesifieke toegangs-ID. 'n Geheim is 'n vooraf gedeelde sleutel wat slegs jy en Cloud Storage weet. Jy gebruik jou geheim om handtekeninge te skep as deel van die outentiseringsproses. Die volgende toon 'n voorbeeld van 'n geheim:

bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Beide die toegangs-ID en geheim identifiseer 'n HMAC-sleutel uniek, maar die geheim is baie sensitiewe inligting, omdat dit gebruik word om handtekeninge te skep.

Enumerasie

# 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

Indien jy 'n toestemmingsgeweier-fout kry wanneer jy emmers lys, kan jy steeds toegang hê tot die inhoud. Dus, nou dat jy bewus is van die naamkonvensie van die emmers, kan jy 'n lys van moontlike name genereer en probeer om toegang tot hulle te verkry:

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

Met toestemmings storage.objects.list en storage.objects.get, behoort jy in staat te wees om alle skywe en lêers van die emmer op te som ten einde hulle af te laai. Jy kan dit bereik met hierdie Python-skrip:

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>')

Voorreg-escalasie

Op die volgende bladsy kan jy sien hoe om stoorregte te misbruik om voorregte te eskaleer:

pageGCP - Storage Privesc

Ongeverifieerde Enum

pageGCP - Storage Unauthenticated Enum

Post Exploitation

pageGCP - Storage Post Exploitation

Volharding

pageGCP - Storage Persistence
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated