GCP - Storage Privesc

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Depolama

Temel Bilgiler:

pageGCP - Storage Enum

storage.objects.get

Bu izin, Cloud Storage içinde depolanan dosyaları indirmenize olanak sağlar. Bu, bazı durumlarda duyarlı bilgilerin kaydedildiği için ayrıcalıkları yükseltmenize olanak sağlayabilir. 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 kaydedilir. Bu görevlerin kodlarının içinde ilginç bilgiler olabilir.

  • 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, bu bölümün önceki senaryolarından herhangi birini kötüye kullanmanıza olanak sağlar.

storage.buckets.setIamPolicy

Bu izinle izinleri nasıl değiştireceğinize dair bir örnek için bu sayfaya bakın:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

Cloud Storage'ın AWS S3 gibi çapraz bulut etkileşimleri için tasarlanmış "uyumluluk" özelliği, Hizmet Hesapları ve kullanıcılar için HMAC anahtarlarının oluşturulmasını içerir. Bir saldırgan, yüksek ayrıcalıklara sahip bir Hizmet Hesabı için HMAC anahtarı oluşturarak bunu istismar edebilir, böylece Cloud Storage içindeki 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 olarak erişilebilir kalır ve potansiyel yedek erişim depolama için kullanılabilir. Öte yandan, Hizmet Hesabıyla ilişkilendirilmiş HMAC anahtarları API erişimine açıktır, ancak erişim ve gizli anahtarlar oluşturulduktan sonra alınamaz, bu da sürekli erişim için bir karmaşıklık katmanı ekler.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

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

Bu yöntem için başka bir exploit scripti burada bulunabilir.

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

Bir kovaya yeni bir nesne oluşturmak için storage.objects.create iznine ihtiyacınız vardır ve belgelere göre, mevcut bir nesneyi değiştirmek için de storage.objects.delete iznine ihtiyacınız vardır.

Bulutta yazma yetkisine sahip olduğunuz kovaların yaygın olarak sömürüldüğü bir durum, kovanın web sunucusu dosyalarını kaydettiği durumdur. Bu durumda, web uygulaması tarafından kullanılacak olan yeni bir kodu depolayabilirsiniz.

Composer

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

  • Bir GKE kümesi içinde çalışır, bu nedenle Composer içinde çalışan kod tarafından erişilebilen SA kümenin kullandığıdır.

  • Kodu bir kovada saklar, bu nedenle, kodu değiştirme/ekleme yetkisine sahip olan herkes, bir DGA kodu (Apache Airflow tarafından yürütülecek olan kod) değiştirebilecektir. Bu durumda, kodu depolamak için Composer'ın kullandığı kovada yazma yetkisine sahipseniz, GKE kümesinde çalışan SA'ya privilege escalation yapabilirsiniz.

Cloud Functions

  • Cloud Functions kodu Depolama'da saklanır, bu nedenle onu ü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, bu kovalara yazabilirseniz, bu kovaların çalıştırıldığı yere yanal hareket edebilirsiniz.

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

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated