GCP - Network Docker Escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bu tekniğin belirtildiği her iki yazıda da, saldırganlar GCP tarafından yönetilen bir Docker konteynerinde root erişimi elde etmeyi başardılar ve ana makine ağına (ve CAP_NET_ADMIN
ve CAP_NET_RAW
yeteneklerine) erişim sağladılar.
Bir Google Compute Engine örneğinde, ağ trafiğinin düzenli incelenmesi, metadata instance'ına 169.254.169.254
adresine sayısız düz HTTP isteği gönderildiğini ortaya koymaktadır. Google Guest Agent, açık kaynaklı bir hizmet, sık sık bu tür isteklerde bulunur.
Bu ajan, metadata'daki değişiklikleri izlemek için tasarlanmıştır. Özellikle, metadata bir SSH genel anahtarları alanı içerir. Metadata'ya yeni bir genel SSH anahtarı eklendiğinde, ajan otomatik olarak bunu .authorized_key
dosyasında yetkilendirir. Ayrıca, gerekirse yeni bir kullanıcı oluşturabilir ve onları sudoers listesine ekleyebilir.
Ajan, tüm metadata değerlerini özyinelemeli olarak almak için bir istek göndererek değişiklikleri izler (GET /computeMetadata/v1/?recursive=true
). Bu istek, metadata sunucusunun yalnızca metadata'da son alımdan bu yana bir değişiklik varsa yanıt vermesi için tasarlanmıştır ve bu değişiklik bir Etag ile tanımlanır (wait_for_change=true&last_etag=
). Ayrıca, bir timeout parametresi (timeout_sec=
) de eklenmiştir. Belirtilen zaman aşımı içinde bir değişiklik olmazsa, sunucu değişmemiş değerlerle yanıt verir.
Bu süreç, IMDS (Instance Metadata Service) yapılandırma değişikliği olmadığında 60 saniye sonra yanıt vermesine olanak tanır ve bu, misafir ajana sahte bir yapılandırma yanıtı enjekte etmek için potansiyel bir pencere oluşturur.
Bir saldırgan, bu durumu Man-in-the-Middle (MitM) saldırısı gerçekleştirerek, IMDS sunucusundan gelen yanıtı taklit ederek ve yeni bir genel anahtar ekleyerek istismar edebilir. Bu, ana makineye yetkisiz SSH erişimi sağlayabilir.
ARP taklidi Google Compute Engine ağlarında etkili olmasa da, Ezequiel tarafından geliştirilen rshijack'ın değiştirilmiş bir versiyonu, SSH kullanıcısını enjekte etmek için iletişimde paket enjeksiyonu yapmak için kullanılabilir.
Bu rshijack versiyonu, ACK ve SEQ numaralarını komut satırı argümanları olarak girmeye olanak tanır ve gerçek Metadata sunucusunun yanıtından önce bir yanıtı taklit etmeyi kolaylaştırır. Ayrıca, küçük bir Shell script kullanılarak özel olarak hazırlanmış bir yük döndürülür. Bu yük, Google Guest Agent'ın .authorized_keys
dosyasında belirtilen bir genel anahtara sahip wouter
adlı bir kullanıcı oluşturmasını tetikler.
Script, Metadata sunucusunun Google Guest Agent'ı farklı metadata değerleri hakkında hemen bilgilendirmesini önlemek için aynı ETag'i kullanarak yanıtı geciktirir.
Taklit işlemini gerçekleştirmek için aşağıdaki adımlar gereklidir:
Metadata sunucusuna gelen istekleri izleyin tcpdump kullanarak:
Aşağıdaki gibi bir satır arayın:
Doğru ETAG ile sahte metadata verisini rshijack'e gönderin:
Bu adım, ilgili özel anahtar ile SSH bağlantısını etkinleştiren genel anahtarı yetkilendirir.
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)