GCP - AppEngine Privesc
Last updated
Last updated
Vir meer inligting oor App Engine, kyk:
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
Dit is die nodige toestemmings om 'n App te ontplooi met die gcloud
-opdraglyn. Dalk kan die get
en list
een vermy word.
Jy kan Python-kodevoorbeelde vind op https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine
Standaard sal 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 hoof sleutel na iets soos service: my-second-app
in app.yaml
.
Gee dit minstens 10-15 minute, as dit nie werk nie, roep implementeer nog 'n paar keer en wag 'n paar minute.
Dit is moontlik om die Diensrekening aan te dui om te gebruik, maar standaard word die App Engine standaard DR gebruik.
Die URL van die aansoek is iets soos https://<proj-naam>.oa.r.appspot.com/
of https://<diens_naam>-dot-<proj-naam>.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
Met hierdie toestemmings is dit moontlik om in te teken via ssh in App Engine-instanies van die tipe buigsame (nie standaard nie). Sommige van die lys
en kry
toestemmings mag nie regtig nodig wees nie.
appengine.applications.update
, appengine.operations.get
Ek dink dit verander net die agtergrond SA wat Google sal gebruik om die aansoeke op te stel, so ek dink nie jy kan dit misbruik om die diensrekening te steel.
```bash gcloud app update --service-account= ``` ### `appengine.versions.getFileContents`, `appengine.versions.update`
Nie seker hoe om hierdie regte te gebruik of as hulle nuttig is (let op dat wanneer jy die kode verander 'n nuwe weergawe geskep word, so ek weet nie of jy net die kode kan opdateer of die IAM rol van een nie, maar ek vermoed jy behoort te kan, dalk die kode binne die emmer verander??).
Selfs met skryftoegang oor die emmers waar die bronkode geleë is WAS DIT NIE moontlik om willekeurige kode uit te voer deur die bronkode en die manifest.json
te wysig nie.
Miskien as jy die emmer monitor en die oomblik waar 'n nuwe weergawe geskep word en die bronkode en manifest opgelaai word, opspoor, kan dit moontlik wees om hulle te verander sodat die nuwe weergawe die agterdeur-eksemplare gebruik??
Dit lyk ook of houerlae in die emmer gestoor word, dalk om daardie te verander?