GCP - AppEngine Privesc

Support HackTricks

App Engine

App Engine рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:

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 рд╡рд╛рд▓реА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЯрд╛рд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рдЖрдк 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 рдорд┐рдирдЯ рджреЗрдВ, рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ deploy another of times рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдорд┐рдирдЯ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред

рдпрд╣ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, App Engine рдбрд┐рдлрд╝реЙрд▓реНрдЯ SA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ URL рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ https://<proj-name>.oa.r.appspot.com/ рдпрд╛ https://<service_name>-dot-<proj-name>.oa.r.appspot.com

рд╕рдордХрдХреНрд╖ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ AppEngine рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХ рдирдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╡рд░реНрддрдорд╛рди App Engine рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

# Find the code of the App Engine in the buckets
gsutil ls

# Download code
mkdir /tmp/appengine2
cd /tmp/appengine2
## In this case it was found in this custom bucket but you could also use the
## buckets generated when the App Engine is created
gsutil cp gs://appengine-lab-1-gcp-labs-4t04m0i6-3a97003354979ef6/labs_appengine_1_premissions_privesc.zip .
unzip labs_appengine_1_premissions_privesc.zip

## Now modify the code..

## If you don't have an app.yaml, create one like:
cat >> app.yaml <<EOF
runtime: python312

entrypoint: gunicorn -b :\$PORT main:app

env_variables:
A_VARIABLE: "value"
EOF

# Deploy the changes
gcloud app deploy

# Update the SA if you need it (and if you have actas permissions)
gcloud app update --service-account=<sa>@$PROJECT_ID.iam.gserviceaccount.com

рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА AppEngine рдХреЛ рд╕рдордЭреМрддрд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрдорддрд┐ appengine.applications.update рдФрд░ actAs рд╣реИ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреЛ рдЖрдк AppEngine рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

gcloud app update --service-account=<sa>@$PROJECT_ID.iam.gserviceaccount.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

рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, App Engine рдХреЗ рдлреНрд▓реЗрдХреНрд╕рд┐рдмрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдорд╛рдирдХ рдирд╣реАрдВ)ред рдХреБрдЫ list рдФрд░ get рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

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

appengine.applications.update, appengine.operations.get

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб SA рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЧреВрдЧрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рдиреЛрдВ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЛ рдЪреБрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

appengine.versions.getFileContents, appengine.versions.update

рдЗрди рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрд╛ рдХреНрдпрд╛ рдпреЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдХреЛрдб рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдХреЛрдб рдпрд╛ рдПрдХ рдХрд╛ IAM рднреВрдорд┐рдХрд╛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдмрдХреЗрдЯ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдмрджрд▓рдХрд░??)ред

рдмрдХреЗрдЯ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐

рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, appengine рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдмрдХреЗрдЯ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдирд╛рдо рд╣реИ: staging.<project-id>.appspot.comред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдмрдХреЗрдЯ рдХреЛ рдкреВрд░реНрд╡-рдЯреЗрдХрдУрд╡рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ GCP рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ appspot.com рдбреЛрдореЗрди рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдмрдХреЗрдЯ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ AppEngine рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЬреБрдбрд╝реЗ SA рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдХреЗрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рдП рдФрд░ рдЬрдм рднреА рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдХреЛрдб рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рддрд░рд╣, рдЗрд╕ рдХреЛрдб рд╕реЗ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдмреИрдХрдбреЛрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ PoC рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреГрд╖реНрда рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ:

рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐

рд╣рд╛рд▓рд╛рдВрдХрд┐ App Engine рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдЕрдВрджрд░ рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рднрд▓реЗ рд╣реА рдЖрдк рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рдЫрд╡рд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдФрд░ App Engine рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╣рдЯрд╛ рджреЗрдВ (рддрд╛рдХрд┐ рдПрдХ рдирдпрд╛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдП) рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд░реЗрд╕ рдХрдВрдбреАрд╢рди рд╣рдорд▓реЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Support HackTricks

Last updated