GCP - AppEngine Privesc
Naucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Naucz się i ćwicz GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
App Engine
Więcej informacji o App Engine znajdziesz tutaj:
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
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
To są potrzebne uprawnienia do wdrożenia aplikacji za pomocą gcloud
cli. Może być możliwe uniknięcie uprawnień get
i list
.
Przykłady kodu w Pythonie znajdziesz na https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine
Domyślnie nazwa usługi App będzie default
, i może być tylko 1 instancja o tej samej nazwie.
Aby to zmienić i utworzyć drugą aplikację, w app.yaml
, zmień wartość klucza głównego na coś w stylu service: my-second-app
Daj co najmniej 10-15 minut, jeśli to nie zadziała, wywołaj deploy another of times i poczekaj kilka minut.
Możliwe jest wskazanie konta usługi do użycia, ale domyślnie używane jest domyślne konto SA App Engine.
URL aplikacji wygląda mniej więcej tak: https://<proj-name>.oa.r.appspot.com/
lub https://<service_name>-dot-<proj-name>.oa.r.appspot.com
Aktualizacja równoważnych uprawnień
Możesz mieć wystarczające uprawnienia do aktualizacji AppEngine, ale nie do utworzenia nowego. W takim przypadku, oto jak można zaktualizować bieżący App Engine:
Jeśli już skompromitowałeś AppEngine i masz uprawnienia appengine.applications.update
oraz actAs nad kontem usługi, które chcesz użyć, możesz zmodyfikować konto usługi używane przez AppEngine za pomocą:
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
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
Z tymi uprawnieniami możliwe jest logowanie się przez ssh do instancji App Engine typu flexible (nie standard). Niektóre z uprawnień list
i get
mogą nie być naprawdę potrzebne.
appengine.applications.update
, appengine.operations.get
appengine.applications.update
, appengine.operations.get
Myślę, że to tylko zmienia domyślne SA, którego Google użyje do skonfigurowania aplikacji, więc nie sądzę, aby można było to wykorzystać do kradzieży konta serwisowego.
appengine.versions.getFileContents
, appengine.versions.update
appengine.versions.getFileContents
, appengine.versions.update
Nie jestem pewien, jak używać tych uprawnień ani czy są one przydatne (zauważ, że gdy zmieniasz kod, tworzona jest nowa wersja, więc nie wiem, czy można po prostu zaktualizować kod lub rolę IAM jednej z nich, ale przypuszczam, że powinno być to możliwe, może zmieniając kod wewnątrz bucketu??).
Dostęp do zapisu w bucketach
Nawet z dostępem do zapisu w bucketach, gdzie znajduje się kod źródłowy, NIE było możliwe wykonanie dowolnego kodu poprzez modyfikację kodu źródłowego i manifest.json
.
Może jeśli monitorujesz bucket i wykryjesz moment, w którym tworzona jest nowa wersja, a kod źródłowy i manifest są przesyłane, możliwe jest ich zmiana, aby nowa wersja używała tych z backdoorem??
Wygląda również na to, że warstwy kontenerów są przechowywane w bucketach, może zmieniając je?
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated