GCP - Storage Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Skladištenje

Google Cloud Platform (GCP) Skladištenje je rešenje za skladištenje zasnovano na oblaku koje pruža visoko izdržljivo i dostupno skladište objekata za nestrukturirane podatke. Nudi različite klase skladištenja zasnovane na performansama, dostupnosti i troškovima, uključujući Standard, Nearline, Coldline i Archive. GCP Skladištenje takođe pruža napredne funkcije poput politika životnog ciklusa, verzioniranja i kontrole pristupa za efikasno upravljanje i osiguravanje podataka.

Kanta može biti smeštena u regionu, u 2 regiona ili multi-regionu (podrazumevano).

Tipovi skladištenja

  • Standardno skladištenje: Ovo je podrazumevani izbor skladištenja koji nudi visoke performanse i pristup podacima sa niskom latencijom. Pogodno je za širok spektar upotreba, uključujući posluživanje sadržaja veb sajtova, strimovanje medija i hostovanje analitičkih pipelina podataka.

  • Nearline skladištenje: Ova klasa skladištenja nudi niže troškove skladištenja i nešto veće troškove pristupa od Standardnog skladištenja. Optimizovana je za podatke koji se retko pristupaju, sa minimalnim trajanjem skladištenja od 30 dana. Idealna je za potrebe sigurnosnih kopija i arhiviranja.

  • Coldline skladištenje: Ova klasa skladištenja je optimizovana za dugoročno skladištenje podataka koji se retko pristupaju, sa minimalnim trajanjem skladištenja od 90 dana. Nudi niže troškove skladištenja od Nearline skladištenja, ali sa višim troškovima pristupa.

  • Archive skladištenje: Ova klasa skladištenja je dizajnirana za hladne podatke do kojih se pristupa veoma retko, sa minimalnim trajanjem skladištenja od 365 dana. Nudi najniže troškove skladištenja od svih opcija skladištenja u GCP-u, ali sa najvišim troškovima pristupa. Pogodna je za dugoročno zadržavanje podataka koji treba da se skladište iz razloga usaglašenosti ili regulatornih zahteva.

  • Autoklasa: Ako ne znate koliko ćete pristupati podacima, možete odabrati Autoklasu i GCP će automatski promeniti tip skladištenja kako bi minimizirao troškove.

Kontrola pristupa

Podrazumevano je preporučljivo kontrolisati pristup putem IAM-a, ali je takođe moguće omogućiti korišćenje ACL-ova. Ako odaberete da koristite samo IAM (podrazumevano) i prođe 90 dana, nećete moći omogućiti ACL-ove za kantu.

Verzioniranje

Moguće je omogućiti verzioniranje, što će sačuvati stare verzije fajlova unutar kante. Moguće je konfigurisati broj verzija koje želite zadržati i čak koliko dugo želite da neaktuelne verzije (stare verzije) ostanu. Preporučljivo je 7 dana za Standardni tip.

Metapodaci neaktuelne verzije se čuvaju. Štaviše, ACL-ovi neaktuelnih verzija se takođe čuvaju, tako da starije verzije mogu imati različite ACL-ove od trenutne verzije.

Saznajte više u dokumentaciji.

Politika zadržavanja

Naznačite koliko dugo želite zabraniti brisanje Objekata unutar kante (veoma korisno za usaglašenost barem). Samo jedno od verzioniranja ili politike zadržavanja može biti omogućeno istovremeno.

Enkripcija

Podrazumevano, objekti su enkriptovani korišćenjem upravljanih ključeva Google-a, ali takođe možete koristiti ključ iz KMS-a.

Javni pristup

Moguće je dati spoljnim korisnicima (prijavljenim u GCP ili ne) pristup sadržaju kanti. Podrazumevano, kada se kanta kreira, opcija za javno izlaganje kante je onemogućena, ali uz dovoljno dozvola to se može promeniti.

Format URL-a za pristup kanti je https://storage.googleapis.com/<ime-kante> ili https://<ime-kante>.storage.googleapis.com (obojica su validna).

HMAC Ključevi

HMAC ključ je vrsta akreditacije i može biti povezan sa servisnim nalogom ili korisničkim nalogom u Cloud Skladištenju. Koristite HMAC ključ za kreiranje potpisa koji se zatim uključuju u zahteve ka Cloud Skladištenju. Potpisi pokazuju da je dati zahtev autorizovan od strane korisnika ili servisnog naloga.

HMAC ključevi imaju dva osnovna dela, pristupni ID i tajna.

  • Pristupni ID: Alfanumerički niz povezan sa određenim servisom ili korisničkim nalogom. Kada je povezan sa servisnim nalogom, niz ima dužinu od 61 karaktera, a kada je povezan sa korisničkim nalogom, niz ima dužinu od 24 karaktera. Sledeći primer prikazuje pristupni ID:

GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Tajna: 40-karakterski Base-64 enkodirani niz koji je povezan sa određenim pristupnim ID-om. Tajna je prethodno deljeni ključ koji znate samo vi i Cloud Skladištenje. Koristite svoju tajnu za kreiranje potpisa kao deo procesa autentifikacije. Sledeći primer prikazuje tajnu:

bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

I pristupni ID i tajna jedinstveno identifikuju HMAC ključ, ali tajna je mnogo osetljivija informacija, jer se koristi za kreiranje potpisa.

Enumeracija

# 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

Ako dobijete grešku dozvole prilikom ispisivanja kanti, možda i dalje imate pristup sadržaju. Sada kada znate o konvenciji imenovanja kanti, možete generisati listu mogućih imena i pokušati im pristupiti:

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

Sa dozvolama storage.objects.list i storage.objects.get, trebalo bi da možete da nabrojite sve fascikle i fajlove iz kante kako biste ih preuzeli. To možete postići ovim Python skriptom:

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

Eskalacija privilegija

Na sledećoj stranici možete proveriti kako zloupotrebiti dozvole za skladištenje radi eskalacije privilegija:

GCP - Storage Privesc

Neautentifikovano nabrajanje

GCP - Storage Unauthenticated Enum

Post eksploatacija

GCP - Storage Post Exploitation

Upornost

GCP - Storage Persistence
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated