GCP - AppEngine Privesc

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

App Engine

Для отримання додаткової інформації про App Engine перегляньте:

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

Це необхідні дозволи для розгортання додатку за допомогою gcloud cli. Можливо, дозволи get та list можна уникнути.

Ви можете знайти приклади коду на Python за посиланням https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine

За замовчуванням, назва служби додатку буде default, і може бути лише 1 екземпляр з такою ж назвою. Щоб змінити це та створити другий додаток, в app.yaml, змініть значення кореневого ключа на щось на зразок service: my-second-app

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

Дайте їй принаймні 10-15 хвилин, якщо це не працює, викличте розгортання ще кілька разів і зачекайте кілька хвилин.

Можливо вказати Обліковий запис служби для використання, але за замовчуванням використовується обліковий запис SA за замовчуванням App Engine.

URL-адреса програми є щось на зразок https://<proj-name>.oa.r.appspot.com/ або https://<service_name>-dot-<proj-name>.oa.r.appspot.com

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

З цими дозволами можливо увійти через ssh в екземпляри App Engine типу гнучкий (не стандартний). Деякі дозволи list та get можуть не бути дійсно необхідними.

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

appengine.applications.update, appengine.operations.get

Я думаю, що це просто змінює фоновий SA, який Google використовуватиме для налаштування додатків, тому я не думаю, що ви можете зловживати цим, щоб вкрасти обліковий запис служби.

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

appengine.versions.getFileContents, appengine.versions.update

Не впевнений, як використовувати ці дозволи або чи вони корисні (зверніть увагу, що при зміні коду створюється нова версія, тому я не знаю, чи можна просто оновити код або роль IAM одного, але, мабуть, ви повинні мати можливість, можливо, змінюючи код всередині відра??).

Доступ на запис до відра

Навіть з доступом на запис до відра, де знаходиться вихідний код, не вдалося виконати довільний код, змінивши вихідний код та manifest.json. Можливо, якщо ви моніторите відро і виявляєте момент, коли створюється нова версія і відбувається завантаження вихідного коду та маніфесту, можливо, змінити їх, щоб нова версія використовувала ті, що мають підтримку??

Здається, що шари контейнера зберігаються в відрі, можливо, змінюючи їх?

Last updated