GCP - Storage Enum

Support HackTricks

Storage

Google Cloud Platform (GCP) Storage ni ufumbuzi wa hifadhi wa wingu unaotoa hifadhi ya vitu yenye kudumu na inapatikana kwa data isiyo na muundo. Inatoa daraja mbalimbali za hifadhi kulingana na utendaji, upatikanaji, na gharama, ikiwa ni pamoja na Standard, Nearline, Coldline, na Archive. GCP Storage pia inatoa vipengele vya hali ya juu kama sera za mzunguko, toleo, na udhibiti wa ufikiaji ili kudhibiti na kulinda data kwa ufanisi.

Ndoo inaweza kuhifadhiwa katika eneo moja, katika maeneo 2 au mikoa mingi (default).

Storage Types

  • Standard Storage: Hii ni chaguo la hifadhi la default ambalo linatoa utendaji wa juu, ufikiaji wa chini wa ucheleweshaji kwa data inayopatikana mara kwa mara. Inafaa kwa matumizi mbalimbali, ikiwa ni pamoja na kutoa maudhui ya tovuti, kuhamasisha vyombo vya habari, na kuandaa mipango ya uchambuzi wa data.

  • Nearline Storage: Daraja hili la hifadhi linatoa gharama za hifadhi za chini na gharama za ufikiaji kidogo zaidi kuliko Standard Storage. Imeboreshwa kwa data inayopatikana mara chache, ikiwa na muda wa chini wa hifadhi wa siku 30. Inafaa kwa madhumuni ya nakala na uhifadhi.

  • Coldline Storage: Daraja hili la hifadhi limeboreshwa kwa hifadhi ya muda mrefu ya data inayopatikana mara chache, ikiwa na muda wa chini wa hifadhi wa siku 90. Inatoa gharama za hifadhi za chini kuliko Nearline Storage, lakini ina gharama za ufikiaji za juu.

  • Archive Storage: Daraja hili la hifadhi limetengenezwa kwa data baridi inayopatikana mara chache sana, ikiwa na muda wa chini wa hifadhi wa siku 365. Inatoa gharama za chini zaidi za hifadhi kati ya chaguzi zote za GCP lakini ina gharama za juu zaidi za ufikiaji. Inafaa kwa uhifadhi wa muda mrefu wa data inayohitaji kuhifadhiwa kwa sababu za kufuata sheria au kanuni.

  • Autoclass: Ikiwa hujui ni kiasi gani utapata data, unaweza kuchagua Autoclass na GCP itabadilisha aina ya hifadhi kiotomatiki ili kupunguza gharama.

Access Control

Kwa default inashauriwa kudhibiti ufikiaji kupitia IAM, lakini pia inawezekana kuwezesha matumizi ya ACLs. Ikiwa unachagua kutumia IAM pekee (default) na siku 90 zinapita, huwezi kuwezesha ACLs kwa ndoo.

Versioning

Inawezekana kuwezesha toleo, hii it hifadhi toleo za zamani za faili ndani ya ndoo. Inawezekana kufafanua idadi ya matoleo unayotaka kuhifadhi na hata ni muda gani unataka matoleo yasiyo ya sasa (matoleo ya zamani) kuishi. Inashauriwa siku 7 kwa aina ya Standard.

Metadata ya toleo lisilo la sasa inahifadhiwa. Zaidi ya hayo, ACLs za matoleo yasiyo ya sasa pia zinahifadhiwa, hivyo matoleo ya zamani yanaweza kuwa na ACLs tofauti na toleo la sasa.

Jifunze zaidi katika docs.

Retention Policy

Onyesha ni muda gani unataka kuzuia kufutwa kwa Vitu ndani ya ndoo (ni muhimu sana kwa kufuata sheria angalau). Ni moja tu ya serikali ya toleo au sera ya uhifadhi inaweza kuwezeshwa kwa wakati mmoja.

Encryption

Kwa default vitu vinahifadhiwa kwa kutumia funguo zinazodhibitiwa na Google, lakini unaweza pia kutumia funguo kutoka KMS.

Public Access

Inawezekana kutoa watumiaji wa nje (waliosajiliwa GCP au la) ufikiaji wa maudhui ya ndoo. Kwa default, wakati ndoo inaundwa, itakuwa na imezima chaguo la kufichua hadharani ndoo, lakini kwa ruhusa ya kutosha inaweza kubadilishwa.

Muundo wa URL wa kufikia ndoo ni https://storage.googleapis.com/<bucket-name> au https://<bucket_name>.storage.googleapis.com (zote ni halali).

HMAC Keys

Funguo za HMAC ni aina ya kitambulisho na zinaweza kuunganishwa na akaunti ya huduma au akaunti ya mtumiaji katika Cloud Storage. Unatumia funguo za HMAC kuunda sahihi ambazo kisha zinajumuishwa katika maombi kwa Cloud Storage. Sahihi zinaonyesha kuwa ombwe fulani limeidhinishwa na mtumiaji au akaunti ya huduma.

Funguo za HMAC zina vipengele viwili vikuu, ID ya ufikiaji na siri.

  • Access ID: Mfuatano wa alphanumeric uliofungwa na akaunti maalum ya huduma au mtumiaji. Wakati umeunganishwa na akaunti ya huduma, mfuatano huu ni herufi 61 kwa urefu, na wakati umeunganishwa na akaunti ya mtumiaji, mfuatano huu ni herufi 24 kwa urefu. Ifuatayo inaonyesha mfano wa ID ya ufikiaji:

GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA

  • Secret: Mfuatano wa herufi 40 ulio na msimbo wa Base-64 ambao umeunganishwa na ID maalum ya ufikiaji. Siri ni funguo iliyoshirikiwa awali ambayo wewe na Cloud Storage pekee mnajua. Unatumia siri yako kuunda sahihi kama sehemu ya mchakato wa uthibitishaji. Ifuatayo inaonyesha mfano wa siri:

bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ

Wote ID ya ufikiaji na siri vinatambulisha kipekee funguo za HMAC, lakini siri ni taarifa nyeti zaidi, kwa sababu inatumika ku unda sahihi.

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

Ikiwa unapata kosa la ruhusa kukataa wakati wa kuorodhesha ndoo, huenda bado ukawa na ufikiaji wa maudhui. Hivyo, sasa kwamba unajua kuhusu kanuni za majina ya ndoo, unaweza kuunda orodha ya majina yanayowezekana na kujaribu kuyafikia:

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

Kwa ruhusa storage.objects.list na storage.objects.get, unapaswa kuwa na uwezo wa kuorodhesha folda zote na faili kutoka kwenye bucket ili kuzipakua. Unaweza kufanikisha hilo kwa kutumia script hii ya Python:

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

Katika ukurasa ufuatao unaweza kuangalia jinsi ya kudhulumu ruhusa za hifadhi ili kupandisha hadhi:

Unauthenticated Enum

Post Exploitation

Persistence

Support HackTricks

Last updated