GCP - Storage Privesc

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'i desteklemenin diğer yolları:

Depolama

Temel Bilgiler:

GCP - Storage Enum

storage.objects.get

Bu izin size Cloud Storage içinde depolanan dosyaları indirme olanağı sağlar. Bu potansiyel olarak yetkileri yükseltmenize izin verebilir çünkü bazı durumlarda hassas bilgiler orada saklanır. Ayrıca, bazı GCP hizmetleri bilgilerini kovalara kaydeder:

  • GCP Composer: Bir Composer Ortamı oluşturduğunuzda, tüm DAG'ların kodu bir kova içinde saklanır. Bu görevler, kodlarının içinde ilginç bilgiler içerebilir.

  • GCR (Container Registry): Konteynerlerin görüntüleri kovalarda saklanır, bu da kovaları okuyabiliyorsanız görüntüleri indirebileceğiniz ve sızıntıları ve/veya kaynak kodunu arayabileceğiniz anlamına gelir.

storage.objects.setIamPolicy

Bu izin size bu bölümün önceki senaryolarından herhangi birini kötüye kullanma izni verebilir.

storage.buckets.setIamPolicy

Bu izinle izinleri nasıl değiştireceğinizle ilgili bir örnek için bu sayfaya göz atın:

GCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

Cloud Storage'ın AWS S3 gibi çapraz bulut etkileşimleri için tasarlanmış "uyumluluk" özelliği, HMAC anahtarlarının Hizmet Hesapları ve kullanıcılar için oluşturulmasını içerir. Bir saldırgan, bu özelliği yükseltilmiş ayrıcalıklara sahip bir Hizmet Hesabı için HMAC anahtarı oluşturarak sömürebilir, böylece Cloud Storage içinde ayrıcalıkları yükseltebilir. Kullanıcıya bağlı HMAC anahtarları yalnızca web konsolu aracılığıyla alınabilirken, erişim ve gizli anahtarlar sürekli erişilebilir kalır, potansiyel yedek erişim depolama olanağı sağlar. Tersine, Hizmet Hesabıyla ilişkilendirilmiş HMAC anahtarları API erişimine açıktır, ancak erişim ve gizli anahtarları oluşturulduktan sonra alınamaz, sürekli erişim için karmaşık bir katman ekler.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gcloud config set pass_credentials_to_gsutil false
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

# Restore
gcloud config set pass_credentials_to_gsutil true

Başka bir exploit betiği bu yöntem için burada bulunabilir.

storage.objects.create, storage.objects.delete = Depolama Yazma izinleri

Bir kova içinde yeni bir nesne oluşturmak için storage.objects.create'a ihtiyacınız var ve belgelere göre, bir var olan nesneyi değiştirmek için ayrıca storage.objects.delete'a ihtiyacınız var.

Bulutta yazma izniniz olan kovaların çok sık olarak sömürüldüğü bir senaryo, kova web sunucusu dosyalarını saklıyorsa, web uygulaması tarafından kullanılacak yeni kodları depolayabilmenizdir.

Composer

Composer, GCP içinde yönetilen Apache Airflow'dur. Birkaç ilginç özelliği vardır:

  • GKE kümesi içinde çalışır, bu nedenle Composer içinde çalışan kodun erişebildiği SA kümesi kullanılabilir

  • Kodu bir kovada saklar, bu nedenle, o kovaya yazma erişimi olan herkes, bir DGA kodu ekleyebilecek veya değiştirebilecek (Apache Airflow'un yürüteceği kod) Dolayısıyla, Composer'ın kodu saklamak için kullandığı kovaya yazma erişiminiz varsa, GKE kümesinde çalışan SA'ya yükselme yapabilirsiniz.

Cloud Functions

  • Cloud Functions kodu Depolama'da saklanır, bu nedenle üzerine yazarak keyfi kodu yürütmek mümkündür.

App Engine

  • App Engine kaynak kodu kovalarda saklanır, kodu üzerine yazarak keyfi kodu yürütmek mümkün olabilir. BU MÜMKÜN DEĞİLDİR

  • Muhtemelen konteyner katmanları kovada saklanır, belki onları değiştirerek?

GCR

  • Google Container Registry, görüntüleri kovalarda saklar, eğer bu kovalara yazabilirseniz, bu kovaların çalıştırıldığı yere yan yana geçiş yapabilirsiniz.

  • GCR tarafından kullanılan kova, gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com benzeri bir URL'ye sahip olacaktır (Üst düzey alt alanlar burada belirtilmiştir).

Referanslar

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'i desteklemenin diğer yolları:

Last updated