GCP - Artifact Registry 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

Temel Bilgiler

Google Cloud Artifact Registry, yazılım nesnelerinizi yönetmenizi, depolamanızı ve güvence altına almanızı sağlayan tamamen yönetilen bir hizmettir. Temelde, Docker görüntüleri, Maven, npm paketleri ve diğer türde nesnelerin depolanması için bir depo işlevi görür. Yazılım geliştirme süreci sırasında üretilen nesneleri depolamak ve sürümlemek için CI/CD boru hatlarında yaygın olarak kullanılır.

Artifact Registry’nin ana özellikleri şunlardır:

  1. Birleşik Depo: Birden fazla nesne türünü destekler, böylece Docker görüntüleri, dil paketleri (Java’nın Maven’i, Node.js’nin npm’i gibi) ve diğer nesne türleri için tek bir depo sahibi olmanızı sağlar, bu da tüm nesnelerinizde tutarlı erişim kontrolleri ve birleşik bir görünüm sağlar.
  2. Tamamen Yönetilen: Yönetilen bir hizmet olarak, altyapıyı, ölçeklendirmeyi ve güvenliği üstlenir, kullanıcılar için bakım yükünü azaltır.
  3. Ayrıntılı Erişim Kontrolü: Google Cloud’un Kimlik ve Erişim Yönetimi (IAM) ile entegre olur, böylece depolarınızdaki nesnelere kimin erişebileceğini, yükleyebileceğini veya indirebileceğini tanımlamanıza olanak tanır.
  4. Coğrafi Yedekleme: Nesnelerin birden fazla bölgede çoğaltılmasını destekler, indirme hızını artırır ve kullanılabilirliği garanti eder.
  5. Google Cloud Hizmetleri ile Entegrasyon: Cloud Build, Kubernetes Engine ve Compute Engine gibi diğer GCP hizmetleriyle sorunsuz bir şekilde çalışır, bu da Google Cloud ekosisteminde zaten çalışan ekipler için uygun bir seçim olmasını sağlar.
  6. Güvenlik: Depolanan nesnelerin güvenli ve bilinen güvenlik sorunlarından arınmış olmasını sağlamak için zafiyet taraması ve konteyner analizi gibi özellikler sunar.

Formatlar ve Modlar

Yeni bir depo oluştururken, deponun format/tipini Docker, Maven, npm, Python gibi birkaç seçenek arasından seçmek mümkündür ve mod genellikle bu üçünden biri olabilir:

  • Standart Depo: GCP’de kendi nesnelerinizi (Docker görüntüleri, Maven paketleri gibi) doğrudan depolamak için varsayılan moddur. Güvenli, ölçeklenebilir ve Google Cloud ekosisteminde iyi bir şekilde entegre olur.
  • Uzaktan Depo (varsa): harici, kamuya açık depolardan nesneleri önbelleğe almak için bir proxy işlevi görür. Üst akışta bağımlılıkların değişmesinden kaynaklanan sorunları önlemeye yardımcı olur ve sık erişilen nesneleri önbelleğe alarak gecikmeyi azaltır.
  • Sanal Depo (varsa): birden fazla (standart veya uzaktan) depoya tek bir uç nokta üzerinden erişim sağlamak için birleşik bir arayüz sunar, bu da çeşitli depolar arasında nesneler için istemci tarafı yapılandırmasını ve erişim yönetimini basitleştirir.
  • Sanal bir depo için depoları seçmeniz ve onlara bir öncelik vermeniz gerekecektir (en yüksek önceliğe sahip depo kullanılacaktır).
  • Uzaktan ve standart depoları bir sanal depoda karıştırabilirsiniz, eğer uzaktan olanın önceliği standart olandan büyükse, uzaktan (örneğin PyPi) paketleri kullanılacaktır. Bu, bir Bağımlılık Karışıklığına yol açabilir.

Uzaktan Docker versiyonunda, Docker Hub’a erişmek için bir kullanıcı adı ve token vermek mümkündür. Token daha sonra Secret Manager’da saklanır.

Şifreleme

Beklendiği gibi, varsayılan olarak Google tarafından yönetilen bir anahtar kullanılır, ancak Müşteri tarafından yönetilen bir anahtar belirtilebilir (CMEK).

Temizlik Politikaları

  • Nesneleri sil: Nesneler, temizlik politikası kriterlerine göre silinecektir.
  • Kuru çalışma: (Varsayılan) Nesneler silinmeyecektir. Temizlik politikaları değerlendirilecek ve test silme olayları Cloud Audit Logging’e gönderilecektir.

Zafiyet Taraması

Konteyner görüntüleri içindeki zafiyetleri kontrol edecek zafiyet tarayıcısını etkinleştirmek mümkündür.

Sayım

# Get repositories
gcloud artifacts repositories list
gcloud artifacts repositories describe --location <location> <repo-name>
gcloud artifacts versions list --repository=<repo-name> -location <location> --package <package-name>

# Get settings of a repository (example using python but could be other)
gcloud artifacts print-settings python --repository <repo-name> --location <location>

# Get docker images
gcloud artifacts docker images list us-central1-docker.pkg.dev/<proj-name>/<repo-name>

# Get packages (like python and others...)
gcloud artifacts packages list --repository <repo-name> --location <location>

# Get SBOMB artifacts
gcloud artifacts sbom list

# Get vulnerabilities (docker images)
gcloud artifacts vulnerabilities list us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
gcloud artifacts docker images list-vulnerabilities projects/<proj-name>/locations/<location>/scans/<scan-uuid>

Yetki Yükseltme

GCP - Artifact Registry Privesc

Kimlik Doğrulaması Olmadan Erişim

GCP - Artifact Registry Unauthenticated Enum

Sonrası-İstismar

GCP - Artifact Registry Post Exploitation

Süreklilik

GCP - Artifact Registry Persistence

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