GCP - Storage Enum
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Storage
Google Cloud Platform (GCP) Storage, yapılandırılmamış veriler için yüksek dayanıklılık ve erişilebilirlik sunan bulut tabanlı bir depolama çözümüdür. Performans, erişilebilirlik ve maliyete dayalı olarak çeşitli depolama sınıfları sunar; bunlar arasında Standard, Nearline, Coldline ve Archive bulunmaktadır. GCP Storage ayrıca verileri etkili bir şekilde yönetmek ve güvence altına almak için yaşam döngüsü politikaları, sürümleme ve erişim kontrolü gibi gelişmiş özellikler sağlar.
Kova bir bölgede, 2 bölgede veya çok bölgeli (varsayılan) olarak depolanabilir.
Storage Types
- Standard Storage: Bu, sık erişilen verilere yüksek performans, düşük gecikme süresi ile erişim sunan varsayılan depolama seçeneğidir. Web sitesi içeriği sunma, medya akışı ve veri analitiği boru hatları barındırma gibi geniş bir kullanım yelpazesi için uygundur.
- Nearline Storage: Bu depolama sınıfı, Standard Storage’dan daha düşük depolama maliyetleri ve biraz daha yüksek erişim maliyetleri sunar. Sık erişilmeyen veriler için optimize edilmiştir ve minimum depolama süresi 30 gündür. Yedekleme ve arşivleme amaçları için idealdir.
- Coldline Storage: Bu depolama sınıfı, sık erişilmeyen verilerin uzun vadeli depolaması için optimize edilmiştir, minimum depolama süresi 90 gündür. Nearline Storage’dan daha düşük depolama maliyetleri sunar, ancak daha yüksek erişim maliyetleri vardır.
- Archive Storage: Bu depolama sınıfı, çok nadir erişilen soğuk veriler için tasarlanmıştır ve minimum depolama süresi 365 gündür. Tüm GCP depolama seçenekleri arasında en düşük depolama maliyetlerini sunar, ancak en yüksek erişim maliyetlerine sahiptir. Uyumluluk veya düzenleyici nedenlerle saklanması gereken verilerin uzun vadeli korunumu için uygundur.
- Autoclass: Eğer verilere ne kadar erişeceğinizi bilmiyorsanız, Autoclass’ı seçebilir ve GCP, maliyetleri en aza indirmek için depolama türünü otomatik olarak değiştirecektir.
Access Control
Varsayılan olarak, erişimi IAM üzerinden kontrol etmeniz önerilir, ancak ACL’lerin kullanımını etkinleştirmek de mümkündür.
Sadece IAM kullanmayı (varsayılan) seçerseniz ve 90 gün geçerse, kova için ACL’leri etkinleştiremeyeceksiniz.
Versioning
Sürümlemeyi etkinleştirmek mümkündür, bu kovanın içindeki dosyanın eski sürümlerini kaydedecektir. Tutmak istediğiniz sürüm sayısını ve hatta eski sürümlerin (geçersiz sürümler) ne kadar süreyle saklanmasını istediğinizi yapılandırmak mümkündür. Standard türü için 7 gün önerilmektedir.
Geçersiz bir sürümün meta verileri korunur. Ayrıca, geçersiz sürümlerin ACL’leri de korunur, bu nedenle eski sürümlerin mevcut sürümden farklı ACL’leri olabilir.
Daha fazla bilgi için docs sayfasını ziyaret edin.
Retention Policy
Kovadaki nesnelerin silinmesini ne kadar süreyle yasaklamak istediğinizi belirtin (en azından uyumluluk için çok faydalıdır).
Sadece bir sürümleme veya saklama politikası aynı anda etkinleştirilebilir.
Encryption
Varsayılan olarak nesneler, Google yönetimli anahtarlar kullanılarak şifrelenir, ancak KMS’den bir anahtar da kullanabilirsiniz.
Public Access
Dış kullanıcıların (GCP’ye giriş yapmış olsun ya da olmasın) kovaların içeriğine erişim vermek mümkündür.
Varsayılan olarak, bir kova oluşturulduğunda, kovanın kamusal olarak açığa çıkarılma seçeneği devre dışı bırakılmıştır, ancak yeterli izinlerle bu değiştirilebilir.
Bir kovaya erişim için URL formatı https://storage.googleapis.com/<bucket-name> veya https://<bucket_name>.storage.googleapis.com şeklindedir (her ikisi de geçerlidir).
HMAC Keys
HMAC anahtarı, bir tür kimlik bilgisi olup, Cloud Storage’da bir hizmet hesabı veya kullanıcı hesabı ile ilişkilendirilebilir. HMAC anahtarını, Cloud Storage’a yapılan isteklerde yer alan imzalar oluşturmak için kullanırsınız. İmzalar, belirli bir isteğin kullanıcı veya hizmet hesabı tarafından yetkilendirildiğini gösterir.
HMAC anahtarları iki ana bileşene sahiptir: bir erişim kimliği ve bir gizli anahtar.
- Access ID: Belirli bir hizmet veya kullanıcı hesabına bağlı alfanümerik bir dizedir. Bir hizmet hesabına bağlı olduğunda, dize 61 karakter uzunluğundadır; bir kullanıcı hesabına bağlı olduğunda ise dize 24 karakter uzunluğundadır. Aşağıda bir erişim kimliği örneği gösterilmektedir:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
- Secret: Belirli bir erişim kimliği ile bağlantılı 40 karakterlik Base-64 kodlu bir dizedir. Gizli anahtar, yalnızca sizin ve Cloud Storage’ın bildiği önceden paylaşılmış bir anahtardır. İmza oluşturmak için gizli anahtarınızı kimlik doğrulama sürecinin bir parçası olarak kullanırsınız. Aşağıda bir gizli anahtar örneği gösterilmektedir:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Hem erişim kimliği hem de gizli anahtar, bir HMAC anahtarını benzersiz olarak tanımlar, ancak gizli anahtar çok daha hassas bir bilgidir, çünkü imzalar oluşturmak için kullanılır.
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
Eğer bucket’ları listelemekte izin reddedildi hatası alıyorsanız, yine de içeriğe erişiminiz olabilir. Şimdi bucket’ların isimlendirme kuralını bildiğinize göre, olası isimlerin bir listesini oluşturabilir ve onlara erişmeyi deneyebilirsiniz:
for i in $(cat wordlist.txt); do gsutil ls -r gs://"$i"; done
storage.objects.list ve storage.objects.get izinleriyle, bunları indirmek için bucket’taki tüm klasörleri ve dosyaları listeleyebilmelisiniz. Bunu bu Python betiğiyle gerçekleştirebilirsiniz:
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>')
Yetki Yükseltme
Aşağıdaki sayfada depolama izinlerini kötüye kullanarak yetki yükseltme nasıl yapılacağını kontrol edebilirsiniz:
Kimlik Doğrulaması Olmadan Enum
GCP - Storage Unauthenticated Enum
Sonrası İstismar
GCP - Storage Post Exploitation
Süreklilik
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

