GCP - Storage Privesc
Depolama
Temel Bilgiler:
pageGCP - Storage Enumstorage.objects.get
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
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
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 Escalationstorage.hmacKeys.create
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.
Bu yöntem için başka bir exploit scripti burada bulunabilir.
storage.objects.create
, storage.objects.delete
= Depolama Yazma izinleri
storage.objects.create
, storage.objects.delete
= Depolama Yazma izinleriBir 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
Last updated