GCP - Understanding Domain-Wide Delegation
Last updated
Last updated
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)
Bu gönderi, daha fazla ayrıntı için erişilebilen https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover bağlantısının tanıtımıdır.
Google Workspace'in Domain-Wide delegation'ı, bir kimlik nesnesinin, ya bir harici uygulama ya da bir iç GCP Service Account aracılığıyla kullanıcılar adına Workspace'teki verilere erişmesine olanak tanır. Bu özellik, Google API'leri veya kullanıcı taklidi gerektiren hizmetlerle etkileşimde bulunan uygulamalar için kritik öneme sahiptir ve görevleri otomatikleştirerek verimliliği artırır ve insan hatalarını en aza indirir. OAuth 2.0 kullanarak, uygulama geliştiricileri ve yöneticileri, bu hizmet hesaplarına bireysel kullanıcı onayı olmadan kullanıcı verilerine erişim verebilir. Google Workspace, iki ana türde küresel devredilmiş nesne kimliklerinin oluşturulmasına izin verir:
GWS Uygulamaları: Workspace Marketplace'ten uygulamalar, devredilmiş bir kimlik olarak ayarlanabilir. Her Workspace uygulaması, potansiyel kötüye kullanımı en aza indirmek için pazara sunulmadan önce Google tarafından gözden geçirilir. Bu, kötüye kullanım riskini tamamen ortadan kaldırmasa da, bu tür olayların gerçekleşmesini önemli ölçüde zorlaştırır.
GCP Service Account: GCP Service Accounts hakkında daha fazla bilgi edinin.
Bir GCP Service Account'ın Google API'lerine diğer kimlikler adına nasıl erişebileceği:
Kimlik bir JWT oluşturur: Kimlik, bir JWT'yi imzalamak için hizmet hesabının özel anahtarını (JSON anahtar çift dosyasının bir parçası) kullanır. Bu JWT, hizmet hesabı, taklit edilecek hedef kullanıcı ve talep edilen REST API'sine erişim için OAuth kapsamlarını içeren iddialar içerir.
Kimlik, erişim token'ı talep etmek için JWT'yi kullanır: Uygulama/kullanıcı, Google'ın OAuth 2.0 hizmetinden bir erişim token'ı talep etmek için JWT'yi kullanır. Talep ayrıca taklit edilecek hedef kullanıcıyı (kullanıcının Workspace e-posta adresi) ve erişim talep edilen kapsamları içerir.
Google'ın OAuth 2.0 hizmeti bir erişim token'ı döner: Erişim token'ı, belirtilen kapsamlar için kullanıcı adına hareket etme yetkisini temsil eder. Bu token genellikle kısa ömürlüdür ve periyodik olarak yenilenmesi gerekir (uygulamanın ihtiyacına göre). JWT token'ında belirtilen OAuth kapsamlarının geçerliliği ve sonuçta elde edilen erişim token'ı üzerinde etkisi olduğunu anlamak önemlidir. Örneğin, birden fazla kapsamı olan erişim token'ları, birçok REST API uygulaması için geçerlilik taşır.
Kimlik, Google API'lerini çağırmak için erişim token'ını kullanır: Şimdi ilgili bir erişim token'ı ile, hizmet gerekli REST API'sine erişebilir. Uygulama, bu erişim token'ını Google API'lerine yönelik HTTP isteklerinin "Authorization" başlığında kullanır. Bu API'ler, taklit edilen kimliği doğrulamak ve gerekli yetkilendirmeye sahip olduğunu onaylamak için token'ı kullanır.
Google API'leri talep edilen verileri döner: Erişim token'ı geçerliyse ve hizmet hesabı uygun yetkilendirmeye sahipse, Google API'leri talep edilen verileri döner. Örneğin, aşağıdaki resimde, hedef Workspace kullanıcısıyla ilişkili tüm Gmail mesaj kimliklerini listelemek için users.messages.list yöntemini kullandık.
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)