GCP - AppEngine Privesc
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)
App Engine hakkında daha fazla bilgi için kontrol edin:
GCP - App Engine Enumappengine.applications.get
, appengine.instances.get
, appengine.instances.list
, appengine.operations.get
, appengine.operations.list
, appengine.services.get
, appengine.services.list
, appengine.versions.create
, appengine.versions.get
, appengine.versions.list
, cloudbuild.builds.get
,iam.serviceAccounts.actAs
, resourcemanager.projects.get
, storage.objects.create
, storage.objects.list
Bunlar, gcloud
cli kullanarak bir Uygulama dağıtmak için gerekli izinlerdir. Belki get
ve list
olanlar kaçınılabilir.
Python kod örneklerini https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine adresinde bulabilirsiniz.
Varsayılan olarak, Uygulama hizmetinin adı default
olacak ve aynı isimle yalnızca 1 örnek olabilir.
Bunu değiştirmek ve ikinci bir Uygulama oluşturmak için, app.yaml
dosyasında kök anahtarın değerini service: my-second-app
gibi bir şeyle değiştirin.
En az 10-15 dakika bekleyin, eğer çalışmazsa başka bir kez dağıtım yapın ve birkaç dakika bekleyin.
Kullanılacak Hizmet Hesabını belirtmek mümkündür ancak varsayılan olarak, App Engine varsayılan SA'sı kullanılır.
Uygulamanın URL'si https://<proj-name>.oa.r.appspot.com/
veya https://<service_name>-dot-<proj-name>.oa.r.appspot.com
gibi bir şeydir.
Bir AppEngine'i güncellemek için yeterli izniniz olabilir ancak yeni bir tane oluşturmak için yeterli izniniz olmayabilir. Bu durumda mevcut App Engine'i güncellemenin yolu şudur:
Eğer zaten bir AppEngine'i ele geçirdiyseniz ve appengine.applications.update
iznine ve actAs yetkisine sahipseniz, AppEngine tarafından kullanılan hizmet hesabını şu şekilde değiştirebilirsiniz:
appengine.instances.enableDebug
, appengine.instances.get
, appengine.instances.list
, appengine.operations.get
, appengine.services.get
, appengine.services.list
, appengine.versions.get
, appengine.versions.list
, compute.projects.get
Bu izinlerle, App Engine örneklerine ssh ile giriş yapmak mümkündür, türü esnek (standart değil). Bazı list
ve get
izinleri gerçekten gerekli olmayabilir.
appengine.applications.update
, appengine.operations.get
Bunun sadece arka plan SA'nın google'ın uygulamaları kurmak için kullanacağı şekilde değiştiğini düşünüyorum, bu yüzden bunu hizmet hesabını çalmak için kötüye kullanabileceğinizi düşünmüyorum.
appengine.versions.getFileContents
, appengine.versions.update
Bu izinleri nasıl kullanacağınızdan veya faydalı olup olmadıklarından emin değilim (kod değiştiğinde yeni bir versiyon oluşturulduğu için, sadece kodu veya birinin IAM rolünü güncelleyip güncelleyemeyeceğinizi bilmiyorum, ama sanırım yapabilmelisiniz, belki de bucket içindeki kodu değiştirerek??).
Belirtildiği gibi, appengine versiyonları staging.<project-id>.appspot.com
formatında bir bucket içinde bazı veriler oluşturur. Bu bucket'ı önceden ele geçirmenin mümkün olmadığını unutmayın çünkü GCP kullanıcıları appspot.com
alan adını kullanarak bucket oluşturmak için yetkilendirilmemiştir.
Ancak, bu bucket üzerinde okuma ve yazma erişimi ile, bucket'ı izleyerek ve herhangi bir değişiklik yapıldığında mümkün olan en hızlı şekilde kodu değiştirerek AppEngine versiyonuna bağlı SA'nın ayrıcalıklarını artırmak mümkündür. Bu şekilde, bu koddan oluşturulan konteyner arka kapılı kodu çalıştıracaktır.
Daha fazla bilgi ve PoC için bu sayfadaki ilgili bilgileri kontrol edin:
GCP - Storage PrivescApp Engine'in Artifact Registry içinde docker görüntüleri oluşturmasına rağmen, bu hizmet içindeki görüntüyü değiştirseniz bile ve App Engine örneğini kaldırıp (yeni bir tane dağıtıldığında) çalıştırılan kod değişmez. Bucket'larla olduğu gibi bir Yarış Koşulu saldırısı gerçekleştirerek çalıştırılan kodu üzerine yazmanın mümkün olabileceği düşünülebilir, ancak bu test edilmedi.
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)