GCP - AppEngine Privesc
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Vir meer inligting oor App Engine kyk:
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
Dit is die nodige toestemmings om 'n App te ontplooi met gcloud
cli. Miskien kan die get
en list
eenhede vermy word.
Jy kan python kode voorbeelde vind in https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine
Standaard gaan die naam van die App diens default
wees, en daar kan slegs 1 instansie met dieselfde naam wees.
Om dit te verander en 'n tweede App te skep, verander die waarde van die wortel sleutel in app.yaml
na iets soos service: my-second-app
Gee dit ten minste 10-15 minute, as dit nie werk nie, bel ontplooi 'n ander keer en wag 'n paar minute.
Dit is moontlik om die Diensrekening aan te dui wat gebruik moet word maar standaard word die App Engine standaard DR gebruik.
Die URL van die toepassing is iets soos https://<proj-name>.oa.r.appspot.com/
of https://<service_name>-dot-<proj-name>.oa.r.appspot.com
Jy mag genoeg regte hê om 'n AppEngine op te dateer, maar nie om 'n nuwe een te skep nie. In daardie geval is dit hoe jy die huidige App Engine kan opdateer:
As jy reeds 'n AppEngine gecompromitteer het en jy het die toestemming appengine.applications.update
en actAs oor die diensrekening wat jy kan gebruik, kan jy die diensrekening wat deur AppEngine gebruik word, met die volgende wysig:
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
Met hierdie toestemmings is dit moontlik om in te log via ssh in App Engine instansies van tipe flexible (nie standaard nie). Sommige van die list
en get
toestemmings mag nie werklik nodig wees nie.
appengine.applications.update
, appengine.operations.get
Ek dink dit verander net die agtergrond SA wat Google sal gebruik om die toepassings op te stel, so ek dink nie jy kan dit misbruik om die diensrekening te steel nie.
appengine.versions.getFileContents
, appengine.versions.update
Nie seker hoe om hierdie toestemmings te gebruik of of hulle nuttig is nie (let daarop dat wanneer jy die kode verander, 'n nuwe weergawe geskep word, so ek weet nie of jy net die kode of die IAM-rol van een kan opdateer nie, maar ek raai jy behoort in staat te wees om dit te doen, dalk deur die kode binne die emmer te verander??).
Soos genoem, genereer die appengine weergawes 'n paar data binne 'n emmer met die formaat naam: staging.<project-id>.appspot.com
. Let daarop dat dit nie moontlik is om hierdie emmer vooraf oor te neem nie, omdat GCP gebruikers nie gemagtig is om emmers te genereer met die domeinnaam appspot.com
.
Met lees- en skryftoegang oor hierdie emmer, is dit egter moontlik om voorregte te verhoog na die SA wat aan die AppEngine weergawe geheg is deur die emmer te monitor en enige tyd wanneer 'n verandering uitgevoer word, die kode so vinnig as moontlik te verander. Op hierdie manier sal die houer wat uit hierdie kode geskep word die agterdeurkode uitvoer.
Vir meer inligting en 'n PoC kyk na die relevante inligting van hierdie bladsy:
GCP - Storage PrivescAlhoewel App Engine docker prente binne Artefak Registrasie skep. Dit is getoets dat selfs al jy die prent binne hierdie diens verander en die App Engine instansie verwyder (sodat 'n nuwe een ontplooi word) die kode wat uitgevoer word, nie verander nie. Dit mag moontlik wees dat 'n Race Condition aanval soos met die emmers moontlik is om die uitgevoerde kode te oorskry, maar dit is nie getoets nie.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)