# GCP - App Engine Enum

{{#include ../../../banners/hacktricks-training.md}}

## Basiese Inligting <a href="#reviewing-app-engine-configurations" id="reviewing-app-engine-configurations"></a>

Google Cloud Platform se (GCP) App Engine is 'n **robuste, serverless platform wat ontwerp is vir die ontwikkeling en gasheer van webtoepassings op 'n groot skaal**. Die ontwerp van hierdie platform fokus op die stroomlyn van die ontwikkelingsproses en die verbetering van die bestuurbaarheid van toepassings. Die sleutelkenmerke en voordele van GCP se App Engine sluit in:

1. **Serverless Argitektuur**: App Engine hanteer outomaties die infrastruktuur, insluitend bedienerprovisionering, konfigurasie en skaalvergroting. Dit stel ontwikkelaars in staat om op die skryf van kode te fokus sonder om oor die onderliggende hardeware te bekommer.
2. **Outomatiese Skaalvergroting**: App Engine kan jou toepassing outomaties skaal in reaksie op die hoeveelheid verkeer wat dit ontvang. Dit skaal op om verhoogde verkeer te hanteer en skaal af wanneer verkeer afneem, wat help om koste en prestasie te optimaliseer.
3. **Taal- en Runtime-ondersteuning**: Dit ondersteun gewilde programmeertale soos Java, Python, Node.js, Go, Ruby, PHP, en .NET. Jy kan jou toepassings in 'n standaard of 'n buigsame omgewing laat loop. Die standaardomgewing is meer beperkend maar hoogs geoptimaliseer vir spesifieke tale, terwyl die buigsame omgewing meer aanpassing toelaat.
4. **Geïntegreerde Dienste**: App Engine integreer met baie ander GCP-dienste, soos Cloud SQL, Cloud Storage, Cloud Datastore, en meer. Hierdie integrasie vereenvoudig die argitektuur van wolk-gebaseerde toepassings.
5. **Weergawebeheer en Verkeersplitsing**: Jy kan maklik verskeie weergawes van jou toepassing ontplooi en dan verkeer tussen hulle verdeel vir A/B-toetsing of geleidelike uitrol.
6. **Toepassing Inligting**: App Engine bied ingeboude dienste soos logging, gebruikersverifikasie, en 'n suite van ontwikkelaarstoerusting vir die monitering en bestuur van toepassings.
7. **Sekuriteit**: Dit bied ingeboude sekuriteitskenmerke soos toepassing weergawebeheer, SSL/TLS sertifikate vir veilige verbindings, en identiteits- en toegangsbestuur.

### Vuurmuur

'n Eenvoudige **vuurmuur** kan gekonfigureer word vir die instansies wat die Apps uitvoer met die volgende opsies:

<figure><img src="../../../images/image (246).png" alt=""><figcaption></figcaption></figure>

### SA

Die standaarddiensrekening wat deur hierdie Apps gebruik word, is **`<proj-name>@appspot.gserviceaccount.com`** wat 'n **Editor** rol oor die projek het en die SA's binne die APP Engine instansie **loop met cloud-platform omvang (onder andere).**

### Berging

Die bronkode en metadata word **outomaties in emmers gestoor** met name soos `<proj-id>.appspot.com` en `staging.<proj-id>.appspot.com` en `<country>.<proj-id>.appspot.com`

**Elke lêer** van die App word gestoor met die **sha1 van die inhoud as lêernaam**:

<figure><img src="../../../images/image (82).png" alt=""><figcaption></figcaption></figure>

Binne die **`ae`** gids van `staging.<proj-id>.appspot.com`, **bestaan een gids per weergawe** met die **bron kode** lêers en **`manifest.json`** lêer wat **die komponente** van die App beskryf:
```json
{"requirements.txt":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/a270eedcbe2672c841251022b7105d340129d108","sha1Sum":"a270eedc_be2672c8_41251022_b7105d34_0129d108"},"main_test.py":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/0ca32fd70c953af94d02d8a36679153881943f32","sha1Sum":"0ca32fd7_0c953af9_4d02d8a ...
```
### Houers

Die webtoepassing sal uiteindelik **binne 'n houer uitgevoer word** en **Code Build** word gebruik om die houer te bou.

### URL's & Streke

Die **verstek** webblad sal blootgestel word in die URL **`<project-uniq-name>.appspot.com`** alhoewel die URL van ouer weergawes effens anders sal wees, soos **`https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com`** (let op die aanvanklike tydstempel).

Dit mag lyk asof dit slegs moontlik is om 1 app engine webtoepassing per streek te ontplooi, maar dit is moontlik om **`service: <servicename>`** in die **`app.yml`** aan te dui en 'n nuwe diens (nuwe web) te skep. Die formaat van die URL vir hierdie nuwe web sal wees **`<servicename>-dot-<project-uniq-name>.appspot.com`**.

### Enumerasie

> [!CAUTION]
> Elke keer as jy 'n nuwe kode na die App opgelaai, **word 'n nuwe weergawe geskep**. **Alle weergawes word gestoor** en hulle het selfs 'n **URL om toegang tot hulle te verkry**. Dus kan die aanpassing van die kode van 'n ou weergawe 'n **groot volhardingstegniek** wees.

Soos met Cloud Functions, **is daar 'n kans dat die toepassing op geheime staatmaak wat tydens uitvoering via omgewingsveranderlikes verkry word**. Hierdie veranderlikes word in 'n **`app.yaml`** lêer gestoor wat soos volg verkry kan word:
```bash
# List the apps
gcloud app services list
gcloud app services describe <app-name>
# Access via browser to the specified app
gcloud app services browse <app-name>

# Get App versions
gcloud app versions list
# Get all the info of the app and version, included specific verion URL and the env
gcloud app versions describe -s <app-name> <version-id>

# Logs
gcloud app logs tail -s <app-name>

# Instances
## This is only valid if a flexible environment is used and not a standard one
gcloud app instances list
gcloud app instances describe -s <app-name> --version <version-id> <ID>
## Connect to the instance via ssh
gcloud app instances ssh --service <app-name> --version <version-id> <ID>

# Firewalls
gcloud app firewall-rules list
gcloud app firewall-rules describe <num_fw>

# Get domains
gcloud app domain-mappings list
gcloud app domain-mappings describe <name>

# SSl certificates
gcloud app ssl-certificates list
gcloud app ssl-certificates describe <name>
```
### Privilege Escalation

{{#ref}}
../gcp-privilege-escalation/gcp-appengine-privesc.md
{{#endref}}

### Unauthenticated Enum

{{#ref}}
../gcp-unauthenticated-enum-and-access/gcp-app-engine-unauthenticated-enum.md
{{#endref}}

### Post Exploitation

{{#ref}}
../gcp-post-exploitation/gcp-app-engine-post-exploitation.md
{{#endref}}

### Persistensie

{{#ref}}
../gcp-persistence/gcp-app-engine-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
