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