GCP - AppEngine Privesc

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

App Engine

App Engine hakkında daha fazla bilgi için:

pageGCP - App Engine Enum

appengine.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 gereken izinlerdir. Belki get ve list olanlar önlenilebilir.

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ı ada sahip sadece 1 örnek olabilir. Bunu değiştirmek ve ikinci bir Uygulama oluşturmak için app.yaml içinde, kök anahtarının değerini service: my-second-app gibi bir şeye değiştirin.

cd python-docs-samples/appengine/flexible/hello_world
gcloud app deploy #Upload and start application inside the folder

En az 10-15 dakika bekleyin, eğer işe yaramazsa birkaç kez yeniden dağıtın ve birkaç dakika bekleyin.

Kullanılacak Hizmet Hesabını belirtmek mümkündür, ancak varsayılan olarak App Engine varsayılan SA kullanılır.

Uygulamanın URL'si https://<proj-adı>.oa.r.appspot.com/ veya https://<service_adı>-dot-<proj-adı>.oa.r.appspot.com gibi bir şeydir.

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, esnek (standart olmayan) türdeki App Engine örneklerine ssh üzerinden giriş yapmak mümkündür. list ve get izinlerinin bazıları gerçekten gerekli olmayabilir.

gcloud app instances ssh --service <app-name> --version <version-id> <ID>

appengine.applications.update, appengine.operations.get

Bu, uygulamaları kurmak için Google'ın arka planda kullanacağı SA'nın değiştirilmesini sağlar, bu nedenle hizmet hesabını çalmak için bunu kötüye kullanamazsınız.

gcloud app update --service-account=<sa_email>

appengine.versions.getFileContents, appengine.versions.update

Bu izinleri nasıl kullanacağınızdan veya bunların faydalı olup olmadığından emin değilim (kod değiştirildiğinde yeni bir sürüm oluşturulduğu için kodu veya bir IAM rolünü güncelleyebileceğinizi bilmiyorum, ancak sanırım bunu yapabilirsiniz, belki kovada kodu değiştirerek??).

Kovalar üzerinde yazma erişimi

Kaynak kodunun bulunduğu kovalara yazma erişimi olsa bile, kaynak kodunu ve manifest.json'ı değiştirerek keyfi kodu yürütmek MÜMKÜN DEĞİLDİR. Belki yeni bir sürümün oluşturulduğu ve kaynak kodunun ve manifestin yüklendiği anı izliyorsanız, bunları değiştirerek yeni sürümün backdoored olanları kullanmasını sağlamak mümkün olabilir mi??

Ayrıca, konteyner katmanlarının kovada depolandığı görünüyor, belki onları değiştirmek?

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmaya kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated