GCP - Network Docker Escape

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

Başlangıç Durumu

Bu teknik belirtilen her iki raporda da, saldırganlar GCP tarafından yönetilen bir Docker konteyneri içinde root erişimi elde etmişlerdir; konteyner host ağına erişim sağlıyordu (ve CAP_NET_ADMIN ile CAP_NET_RAW yeteneklerine sahipti).

Saldırı Açıklaması

Bir Google Compute Engine örneğinde, ağ trafiğinin düzenli incelenmesi 169.254.169.254 adresindeki metadata instance’a yapılan birçok düz HTTP isteği gösterir. Google Guest Agent, açık kaynaklı bir servis olarak sık sık bu tür istekleri yapar.

Bu agent, metadata’daki değişiklikleri izlemek için tasarlanmıştır. Metadata özellikle SSH public key alanını içerir. Yeni bir public SSH anahtarı metadata’ya eklendiğinde, agent otomatik olarak bunu .authorized_key dosyasına yetkilendirir. Gerekirse yeni bir kullanıcı oluşturup onu sudoers listesine ekleyebilir.

Agent, 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 son alımdan bu yana metadata’da bir değişiklik varsa yanıt göndermesini sağlamak için tasarlanmıştır; değişiklik, bir Etag ile tanımlanır (wait_for_change=true&last_etag=). Ayrıca bir timeout parametresi (timeout_sec=) bulunur. Belirtilen zaman aşımı içinde değişiklik olmazsa, sunucu değişmemiş değerleri döner.

Bu süreç, IMDS’nin (Instance Metadata Service) herhangi bir yapılandırma değişikliği yoksa 60 saniye sonra yanıt vermesine izin verir; bu, guest agent’a gönderilecek sahte bir yapılandırma yanıtını enjekte etmek için bir boşluk yaratır.

Bir saldırgan bunu, IMDS sunucusundan gelen yanıtı taklit eden bir Man-in-the-Middle (MitM) saldırısı yaparak ve yeni bir public key ekleyerek kötüye kullanabilir. Bu, host’a yetkisiz SSH erişimi sağlayabilir.

Escape Tekniği

Google Compute Engine ağlarında ARP spoofing etkisiz olsa da, Ezequiel tarafından geliştirilen rshijack’in değiştirilmiş bir versiyonu, iletişime paket enjeksiyonu yapmak ve SSH kullanıcısını enjekte etmek için kullanılabilir.

rshijack’in bu sürümü, ACK ve SEQ numaralarını komut satırı argümanları olarak girmeye izin verir; bu, gerçek Metadata sunucusu yanıtından önce bir yanıtı taklit etmeyi kolaylaştırır. Ayrıca, küçük bir Shell script özel olarak hazırlanmış bir payload döndürmek için kullanılır. Bu payload, Google Guest Agent’ın .authorized_keys dosyasına belirli bir public key ile wouter kullanıcısını oluşturmasını tetikler.

Script, Metadata sunucusunun farklı metadata değerlerini Google Guest Agent’a hemen bildirmesini engellemek için aynı ETag’i kullanır; böylece yanıt geciktirilir.

Spoofing’i gerçekleştirmek için şu adımlar gereklidir:

  1. Metadata sunucusuna olan istekleri izleyintcpdump kullanarak:
Metadata sunucusu isteklerini tcpdump ile izle ```bash tcpdump -S -i eth0 'host 169.254.169.254 and port 80' & ```

Aşağıdakine benzer bir satır arayın:

Örnek tcpdump çıktı satırı ```