GCP - Storage Enum
Reading time: 7 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Storage
Google Cloud Platform (GCP) Storage je rešenje za skladištenje u oblaku koje pruža visoko izdržljivo i dostupno skladištenje 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 Storage takođe pruža napredne funkcije kao što su politike životnog ciklusa, verzionisanje i kontrola pristupa za efikasno upravljanje i zaštitu podataka.
Kanta može biti smeštena u regionu, u 2 regiona ili multi-region (podrazumevano).
Storage Types
- Standard Storage: Ovo je podrazumevana opcija skladištenja koja nudi visok učinak, nisku latenciju pristupa često korišćenim podacima. Pogodna je za širok spektar slučajeva upotrebe, uključujući pružanje sadržaja veb stranica, strimovanje medija i hostovanje analitičkih tokova podataka.
- Nearline Storage: Ova klasa skladištenja nudi niže troškove skladištenja i malo više troškove pristupa od Standard Storage. Optimizovana je za retko pristupane podatke, sa minimalnim vremenom skladištenja od 30 dana. Idealna je za backup i arhiviranje.
- Coldline Storage: Ova klasa skladištenja je optimizovana za dugoročno skladištenje retko pristupanih podataka, sa minimalnim vremenom skladištenja od 90 dana. Nudi niže troškove skladištenja od Nearline Storage, ali sa višim troškovima pristupa.
- Archive Storage: Ova klasa skladištenja je dizajnirana za hladne podatke koji se pristupaju veoma retko, sa minimalnim vremenom skladištenja od 365 dana. Nudi najniže troškove skladištenja od svih GCP opcija skladištenja ali sa najvišim troškovima pristupa. Pogodna je za dugoročno čuvanje podataka koji moraju biti skladišteni iz razloga usklađenosti ili regulative.
- Autoclass: Ako ne znate koliko ćete često pristupati podacima, možete izabrati Autoclass i GCP će automatski promeniti tip skladištenja kako bi minimizirao troškove.
Access Control
Pod razumevanjem je preporučljivo kontrolisati pristup putem IAM, ali je takođe moguće omogućiti korišćenje ACL-a.
Ako izaberete da koristite samo IAM (podrazumevano) i prođe 90 dana, nećete moći da omogućite ACL-e za kantu.
Versioning
Moguće je omogućiti verzionisanje, ovo će sačuvati stare verzije datoteke unutar kante. Moguće je konfigurisati broj verzija koje želite da zadržite i čak koliko dugo želite da neaktuelne verzije (stare verzije) žive. Preporučuje se 7 dana za Standard tip.
Metapodaci neaktuelne verzije se čuvaju. Štaviše, ACL-i neaktuelnih verzija se takođe čuvaju, tako da starije verzije mogu imati različite ACL-e od trenutne verzije.
Saznajte više u docs.
Retention Policy
Naznačite koliko dugo želite da zabranite brisanje objekata unutar kante (veoma korisno za usklađenost barem).
Samo jedna od verzionisanja ili politike zadržavanja može biti omogućena u isto vreme.
Encryption
Podrazumevano, objekti su šifrovani koristeći Google upravljane ključeve, ali takođe možete koristiti ključ iz KMS.
Public Access
Moguće je dati spoljnim korisnicima (prijavljenim u GCP ili ne) pristup sadržaju kanti.
Podrazumevano, kada se kanta kreira, imaće onemogućenu opciju da se javno izloži kanta, ali uz dovoljno dozvola to se može promeniti.
Format URL-a za pristup kanti je https://storage.googleapis.com/<bucket-name>
ili https://<bucket_name>.storage.googleapis.com
(oba su validna).
HMAC Keys
HMAC ključ je vrsta akreditiva i može biti povezan sa servisnim nalogom ili korisničkim nalogom u Cloud Storage. Koristite HMAC ključ za kreiranje potpisa koji se zatim uključuju u zahteve za Cloud Storage. Potpisi pokazuju da je dati zahtev autorizovan od strane korisnika ili servisnog naloga.
HMAC ključevi imaju dva osnovna dela, ID pristupa i tajnu.
- Access ID: Alfanumerički niz povezan sa specifičnim servisom ili korisničkim nalogom. Kada je povezan sa servisnim nalogom, niz ima 61 karakter, a kada je povezan sa korisničkim nalogom, niz ima 24 karaktera. Sledeće prikazuje primer ID-a pristupa:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
- Secret: Niz od 40 karaktera kodiran u Base-64 koji je povezan sa specifičnim ID-om pristupa. Tajna je unapred podeljeni ključ koji samo vi i Cloud Storage znate. Koristite svoju tajnu za kreiranje potpisa kao deo procesa autentifikacije. Sledeće prikazuje primer tajne:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
I ID pristupa i tajna jedinstveno identifikuju HMAC ključ, ali je tajna mnogo osetljivija informacija, jer se koristi za kreiranje potpisa.
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
# Get permissions
gcloud storage buckets get-iam-policy gs://bucket-name/
gcloud storage objects get-iam-policy gs://bucket-name/folder/object
Ako dobijete grešku "permission denied" prilikom listanja kanti, možda i dalje imate pristup sadržaju. Dakle, sada kada znate o konvenciji imena kanti, možete generisati listu mogućih imena i pokušati da im pristupite:
for i in $(cat wordlist.txt); do gsutil ls -r gs://"$i"; done
Sa dozvolama storage.objects.list
i storage.objects.get
, trebali biste moći da enumerišete sve foldere i fajlove iz bucket-a 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 da zloupotrebite dozvole za skladištenje da biste eskalirali privilegije:
Neautentifikovana enumeracija
GCP - Storage Unauthenticated Enum
Post eksploatacija
GCP - Storage Post Exploitation
Perzistencija
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.