GCP - Özel SSH Metadata Ekle

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

Metadata’yı Değiştirme

Bir örnekte metadata değişikliği, bir saldırgan gerekli izinleri elde ederse önemli güvenlik risklerine yol açabilir.

Özel Metadata’ya SSH Anahtarlarının Dahil Edilmesi

GCP’de, Linux sistemleri genellikle Google Compute Engine için Python Linux Misafir Ortamı üzerinden betikler çalıştırır. Bunun kritik bir bileşeni, yetkilendirilmiş SSH genel anahtarları için örnek metadata uç noktasını düzenli olarak kontrol etmek üzere tasarlanmış accounts daemondır.

Bu nedenle, eğer bir saldırgan özel metadata’yı değiştirebilirse, daemon’un yeni bir genel anahtar bulmasını sağlayabilir, bu da işlenip yerel sisteme entegre edilecektir. Anahtar, mevcut bir kullanıcının ~/.ssh/authorized_keys dosyasına eklenecek veya anahtarın formatına bağlı olarak sudo ayrıcalıkları olan yeni bir kullanıcı oluşturulacaktır. Ve saldırgan, ana bilgisayarı tehlikeye atabilecektir.

Mevcut ayrıcalıklı kullanıcıya SSH anahtarı ekleme

  1. Örnekteki Mevcut SSH Anahtarlarını İnceleyin:
  • Mevcut SSH anahtarlarını bulmak için örneği ve metadata’sını tanımlamak üzere komutu çalıştırın. Çıktıdaki ilgili bölüm metadata altında, özellikle ssh-keys anahtarı altında olacaktır.
gcloud compute instances describe [INSTANCE] --zone [ZONE]
  • SSH anahtarlarının formatına dikkat edin: kullanıcı adı anahtarın önündedir ve iki nokta ile ayrılmıştır.
  1. SSH Anahtarı Metadata’sı için Bir Metin Dosyası Hazırlayın:
  • Kullanıcı adları ve bunlara karşılık gelen SSH anahtarlarının detaylarını meta.txt adlı bir metin dosyasına kaydedin. Bu, mevcut anahtarları korumak için önemlidir.
  1. Hedef Kullanıcı için Yeni Bir SSH Anahtarı Oluşturun (alice bu örnekte):
  • Hedef kullanıcı adıyla eşleşen yorum alanı (-C) ile yeni bir SSH anahtarı oluşturmak için ssh-keygen komutunu kullanın.
ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
  • Yeni genel anahtarı, örneğin metadata’da bulunan formatı taklit ederek meta.txt dosyasına ekleyin.
  1. Örneğin SSH Anahtarı Metadata’sını Güncelleyin:
  • Güncellenmiş SSH anahtarı metadata’sını örneğe uygulamak için gcloud compute instances add-metadata komutunu kullanın.
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
  1. Yeni SSH Anahtarı ile Örneğe Erişim Sağlayın:
  • Yeni anahtarı kullanarak SSH ile örneğe bağlanın ve hedef kullanıcı bağlamında shell’e erişin (alice bu örnekte).
ssh -i ./key alice@localhost
sudo id

Yeni bir ayrıcalıklı kullanıcı oluşturun ve bir SSH anahtarı ekleyin

Eğer ilginç bir kullanıcı bulunamazsa, sudo ayrıcalıkları verilecek yeni bir kullanıcı oluşturmak mümkündür:

# define the new account username
NEWUSER="definitelynotahacker"

# create a key
ssh-keygen -t rsa -C "$NEWUSER" -f ./key -P ""

# create the input meta file
NEWKEY="$(cat ./key.pub)"
echo "$NEWUSER:$NEWKEY" > ./meta.txt

# update the instance metadata
gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-keys=meta.txt

# ssh to the new account
ssh -i ./key "$NEWUSER"@localhost

Proje Düzeyinde SSH Anahtarları

Proje düzeyinde SSH anahtarları uygulayarak bir bulut ortamında birden fazla Sanal Makineye (VM) SSH erişimini genişletmek mümkündür. Bu yaklaşım, projede açıkça proje genelinde SSH anahtarlarını engellemeyen herhangi bir örneğe SSH erişimi sağlar. İşte özet bir kılavuz:

  1. Proje Düzeyinde SSH Anahtarlarını Uygula:
  • meta.txt dosyasındaki SSH anahtarlarını projenin meta verilerine eklemek için gcloud compute project-info add-metadata komutunu kullanın. Bu işlem, SSH anahtarlarının projedeki tüm VM’ler tarafından tanınmasını sağlar, eğer bir VM “Proje genelinde SSH anahtarlarını engelle” seçeneğini etkinleştirmemişse.
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
  1. Proje Genel Anahtarları Kullanarak Örneklerine SSH Bağlan:
  • Proje genelinde SSH anahtarları mevcut olduğunda, projedeki herhangi bir örneğe SSH ile bağlanabilirsiniz. Proje genelinde anahtarları engellemeyen örnekler, SSH anahtarını kabul ederek erişim sağlar.
  • Bir örneğe SSH ile bağlanmanın doğrudan bir yöntemi, gcloud compute ssh [INSTANCE] komutunu kullanmaktır. Bu komut, mevcut kullanıcı adınızı ve proje düzeyinde ayarlanmış SSH anahtarlarını kullanarak erişim sağlamaya çalışır.

Referanslar

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