Kubernetes’i hackleyip Secret kaynağında saklanan parolaları bulma yöntemi
(insight.infograb.net)- Bu içeriğin amacı Kubernetes güvenliğinin önemine dikkat çekmektir
- Secret’in saklandığı yerler
- Kullanıcı
kubectlkomutuyla bir kaynak tanımladığında Kubernetes, bu kaynağı tanımlayan manifest dosyasını oluşturupetcd’ye kaydeder - Kullanıcı bir Secret kaynağı tanımladığında Secret de
etcd’ye kaydedilir - Kullanıcı Secret’i volume ya da ortam değişkeni olarak okuyan bir pod oluşturduğunda Secret ilgili pod’a kaydedilir
- Secret’in saklandığı
etcdile Secret’in kullanıldığı pod hacklenirse, Secret’te saklanan parola öğrenilebilir
- Kullanıcı
- Ön hazırlık
kubeadmile küme oluşturma- Uygulama için önceden üç kaynak oluşturma: Secret
credit-card, podapp1, podapp2
etcdhacklemeetcd: Kubernetes kümesinin durumunu saklayan bir anahtar-değer veri deposu. Kubernetes’te tanımlanan tüm bilgiler burada saklanır. Secret deetcdincelenerek öğrenilebilir- 1.1
etcdctlile parola bulmakube-apiservermanifestini inceleyipetcdsunucusunun certificate authority, açık anahtar ve özel anahtarını almaetcd’yi rahat yönetmeye yarayanetcdctlkomutu üzerinden parolayı bulma
- 1.2
etcdDB’sine doğrudan erişip almaetcd’nin çalıştığı süreci bulup, o sürecin tüm verilerini tarayarak parolayı bulmaps aux | grep etcd-etcdPID’sini almall /proc/<pid>/fdçıktısındadbyazan link dosyasını görmecat /proc/<pid>fd/<db> | grep -A10 -B10 credit-cardkomutuyla önceden oluşturulan parolayı bulma
- pod hackleme
kubectl execile alma- Kubernetes’i sorgulamak için uygun yetki varsa
kubectlkomutuyla parola alınabilir
- Kubernetes’i sorgulamak için uygun yetki varsa
- Konteynere doğrudan erişip alma
- Worker node üzerinde Docker komutlarını serbestçe kullanabiliyorsanız parola sızdırılabilir
- pod
app1’in planlandığı worker node’da konteyneri bulup, konteynere tanımlı ortam değişkenleri listesini çıkarabilirsinizcrictl pods-app1’in Pod ID’sini bulmacrictl ps- Pod ID’ye karşılık gelen konteyneri bulmacrictl inspect <container id> | grep -A16 env- ilgili konteyneri ayrıntılı inceleyip ortam değişkenlerini çıkarma
- Secret’e erişim yetkisi olan ServiceAccount ile alma
- Pod’un ServiceAccount’u Secret’e erişim yetkisine sahipse pod içinden API çağrısıyla parola bulunabilir
- Yukarıda anlatılan hacklemeyi engelleme yöntemleri
- “En az ayrıcalık ilkesi”ne uyarak gereksiz yetkileri olan service account’lar oluşturmamak
- Sosyal mühendislik gibi tehditlere karşı kullanıcı kimlik bilgilerinin açığa çıkmamasını sağlamak
EncryptionConfigurationkaynağı üzerindenetcdşifrelemesi
Henüz yorum yok.