GCP - Network Docker Escape
Başlangıç Durumu
Bu teknik belirtildiği iki yazıda da saldırganlar, GCP tarafından yönetilen bir Docker konteynerinde kök erişimi elde etmeyi başardılar ve ana ağa erişime sahiptiler (CAP_NET_ADMIN
ve CAP_NET_RAW
yetenekleri ile).
Saldırı Açıklaması
Google Compute Engine örneğinde, ağ trafiğinin düzenli olarak incelenmesi, 169.254.169.254
adresindeki metadata örneğine birçok düz HTTP isteği olduğunu ortaya çıkardı. Sık sık bu tür isteklerde bulunan açık kaynaklı bir hizmet olan Google Guest Agent, bu istekleri yapar.
Bu ajan, metadata'da yapılan değişiklikleri izlemek için tasarlanmıştır. Özellikle, metadata, bir SSH genel anahtarları alanı içerir. Yeni bir genel SSH anahtarı metadata'ya eklenirse, ajan otomatik olarak bunu .authorized_key
dosyasında yetkilendirir. Gerekirse ayrıca yeni bir kullanıcı oluşturur ve onları sudoers a ekler.
Ajan, tüm metadata değerlerini rekürsif olarak almak için bir istek göndererek (GET /computeMetadata/v1/?recursive=true
) değişiklik olup olmadığını kontrol eder. Bu istek, metadata sunucusunun, son alımdan bu yana metadata'da herhangi bir değişiklik olup olmadığını belirleyen bir Etag ile yanıt göndermesini sağlamak için tasarlanmıştır (wait_for_change=true&last_etag=
). Ek olarak, bir zaman aşımı parametresi (timeout_sec=
) eklenir. Belirtilen zaman aşımı süresi içinde herhangi bir değişiklik olmazsa, sunucu değişmeyen değerlerle yanıt verir.
Bu süreç, IMDS (Örnek Metadata Hizmeti)'nin, yapılandırma değişikliği olmadığında 60 saniye sonra yanıt vermesine olanak tanır ve bu da sahte bir yapılandırma yanıtının enjekte edilmesi için bir pencere oluşturur.
Bir saldırgan, IMDS sunucusundan gelen yanıtı Man-in-the-Middle (MitM) saldırısı yaparak ve IMDS sunucusundan gelen yanıtı taklit ederek ve yeni bir genel anahtar ekleyerek bunu sömürebilir. Bu, ana bilgisayara yetkisiz SSH erişimi sağlayabilir.
Kaçış Tekniği
ARP spoofing, Google Compute Engine ağlarında etkisizdir, ancak Ezequiel tarafından geliştirilen rshijack'ın modifiye edilmiş bir sürümü, paket enjeksiyonu için kullanılabilir.
Bu rshijack sürümü, ACK ve SEQ numaralarını komut satırı argümanları olarak girmeyi sağlar, böylece gerçek Metadata sunucusu yanıtından önce bir yanıtın taklit edilmesi kolaylaşır. Ayrıca, özel olarak oluşturulmuş bir yükü döndüren küçük bir Shell betiği kullanılır. Bu yük, Google Guest Agent'ın .authorized_keys
dosyasında belirtilen bir genel anahtarla wouter
adında bir kullanıcı oluşturmasını tetikler.
Betik, Metadata sunucusunun hemen farklı metadata değerlerini Google Guest Agent'a bildirmesini engellemek için aynı ETag'i kullanır ve böylece yanıtı geciktirir.
Sahte yanıtın yürütülmesi için aşağıdaki adımlar gereklidir:
Metadata sunucusuna yapılan istekleri tcpdump kullanarak izleyin:
To escape the Docker container and gain access to the underlying host, you can exploit misconfigurations in the GCP network settings.
Turkish Translation:
Docker konteynerinden kaçarak altta yatan ana bilgisayara erişim sağlamak için, GCP ağ ayarlarında yapılandırma hatalarını sömürebilirsiniz.
Rshijack'e doğru ETAG ile sahte meta verileri gönderin:
Bu adım, ilgili özel anahtarla SSH bağlantısını etkinleştirmek için genel anahtarı yetkilendirir.
Referanslar
Last updated