GCP - IAM Privesc
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)
IAM hakkında daha fazla bilgi için:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)Belirtilen izinlere sahip bir saldırgan, size atanan bir rolü güncelleyebilir ve size diğer kaynaklara ek izinler verebilir:
Bir vuln ortamının oluşturulması, istismar edilmesi ve temizlenmesi için bir script burada bulunabilir ve bu yetkiyi kötüye kullanmak için bir python scripti burada mevcuttur. Daha fazla bilgi için orijinal araştırmaya bakın.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)Bahsedilen izinlere sahip bir saldırgan, bir Hizmet Hesabına ait bir erişim tokeni talep edebilecektir, bu nedenle bizden daha fazla yetkiye sahip bir Hizmet Hesabının erişim tokenini talep etmek mümkündür.
Bir vuln ortamının oluşturulması, istismar edilmesi ve temizlenmesi için bir scripti burada bulabilirsiniz ve bu yetkiyi kötüye kullanmak için bir python scriptini burada bulabilirsiniz. Daha fazla bilgi için orijinal araştırmaya bakın.
iam.serviceAccountKeys.create
Belirtilen izinlere sahip bir saldırgan, bir Hizmet Hesabı için kullanıcı tarafından yönetilen bir anahtar oluşturabilecektir, bu da bize GCP'ye o Hizmet Hesabı olarak erişim sağlayacaktır.
Bir vuln ortamın oluşturulması, istismar edilmesi ve temizlenmesi için bir script burada ve bu yetkiden yararlanmak için bir python scripti burada bulunmaktadır. Daha fazla bilgi için orijinal araştırmaya bakın.
iam.serviceAccountKeys.update
'in bir SA'nın anahtarını değiştirmek için çalışmayacağını unutmayın çünkü bunu yapmak için iam.serviceAccountKeys.create
izni de gereklidir.
iam.serviceAccounts.implicitDelegation
Eğer iam.serviceAccounts.implicitDelegation
iznine sahipseniz ve bu izne sahip bir Service Account'un iam.serviceAccounts.getAccessToken
iznine sahip olduğu üçüncü bir Service Account varsa, o zaman implicitDelegation kullanarak o üçüncü Service Account için bir token oluşturabilirsiniz. Açıklamaya yardımcı olacak bir diyagram burada.
Dokümantasyona göre belirtilmiştir, gcloud
'un delegasyonu yalnızca generateAccessToken() yöntemini kullanarak bir token oluşturmak için çalışır. İşte API'yi doğrudan kullanarak bir token almanın yolu:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.signBlob
An attacker with the mentioned permissions will be able to GCP'de rastgele yükleri imzalamak. Bu nedenle, SA'nın imzasız bir JWT'sini oluşturmak ve ardından hedeflediğimiz SA tarafından imzalanmış JWT'yi almak için bir blob olarak göndermek mümkün olacaktır. For more information read this.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here and here. For more information check the original research.
iam.serviceAccounts.signJwt
An attacker with the mentioned permissions will be able to iyi biçimlendirilmiş JSON web token'larını (JWT'ler) imzalamak. Önceki yöntemle arasındaki fark, google'ın bir JWT içeren bir blob'u imzalamasını sağlamak yerine, zaten bir JWT bekleyen signJWT yöntemini kullanmamızdır. Bu, kullanımı kolaylaştırır ancak yalnızca JWT'leri imzalayabilirsiniz, herhangi bir baytı değil.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.setIamPolicy
An attacker with the mentioned permissions will be able to hizmet hesaplarına IAM politikaları eklemek. Bunu, hizmet hesabını taklit etmek için ihtiyaç duyduğunuz izinleri kendinize vermek için kötüye kullanabilirsiniz. Aşağıdaki örnekte, ilginç SA üzerinde roles/iam.serviceAccountTokenCreator
rolünü kendimize veriyoruz:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here.
iam.serviceAccounts.actAs
The iam.serviceAccounts.actAs permission is like the iam:PassRole permission from AWS. It's essential for executing tasks, like initiating a Compute Engine instance, as it grants the ability to "actAs" a Service Account, ensuring secure permission management. Without this, users might gain undue access. Additionally, exploiting the iam.serviceAccounts.actAs involves various methods, each requiring a set of permissions, contrasting with other methods that need just one.
Bir hizmet hesabını taklit etmek, yeni ve daha iyi ayrıcalıklar elde etmek için çok faydalı olabilir. Başka bir hizmet hesabını taklit etmenin üç yolu vardır:
Kimlik doğrulama RSA özel anahtarları kullanarak (yukarıda ele alındı)
Yetkilendirme Cloud IAM politikaları kullanarak (burada ele alındı)
GCP hizmetlerinde işler dağıtarak (bir kullanıcı hesabının ele geçirilmesiyle daha ilgili)
iam.serviceAccounts.getOpenIdToken
Belirtilen izinlere sahip bir saldırgan, bir OpenID JWT oluşturabilecektir. Bunlar kimliği doğrulamak için kullanılır ve bir kaynağa karşı herhangi bir örtük yetkilendirme taşımazlar.
Bu ilginç yazıya göre, hedef kitlenin (token'ı kimlik doğrulamak için kullanmak istediğiniz hizmet) belirtilmesi gerekmektedir ve hizmet hesabını ve JWT'nin hedef kitlesini belirten google tarafından imzalanmış bir JWT alacaksınız.
Erişiminiz varsa bir OpenIDToken oluşturabilirsiniz:
Sonra bunu servise erişmek için kullanabilirsiniz:
Bazı hizmetler, bu tür token'lar aracılığıyla kimlik doğrulamayı desteklemektedir:
Google Cloud Endpoints (Google OIDC kullanıyorsanız)
Bir hizmet hesabı adına OpenID token oluşturma ile ilgili bir örneği burada bulabilirsiniz.
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)