GCP - App Engine Enum

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Informazioni di base

App Engine di Google Cloud Platform (GCP) è una piattaforma robusta e senza server progettata per lo sviluppo e l'hosting di applicazioni web su larga scala. Il design di questa piattaforma si concentra sulla semplificazione del processo di sviluppo e sull'ottimizzazione della gestione delle applicazioni. Le caratteristiche chiave e i vantaggi di App Engine di GCP includono:

  1. Architettura senza server: App Engine gestisce automaticamente l'infrastruttura, inclusa la fornitura, la configurazione e la scalabilità del server. Ciò consente ai programmatori di concentrarsi sulla scrittura del codice senza preoccuparsi dell'hardware sottostante.

  2. Scalabilità automatica: App Engine può scalare automaticamente la tua applicazione in risposta alla quantità di traffico ricevuto. Si scalano per gestire un aumento del traffico e si riducono quando il traffico diminuisce, aiutando ad ottimizzare costi e prestazioni.

  3. Supporto per linguaggi e runtime: Supporta linguaggi di programmazione popolari come Java, Python, Node.js, Go, Ruby, PHP e .NET. È possibile eseguire le applicazioni in un ambiente standard o flessibile. L'ambiente standard è più restrittivo ma altamente ottimizzato per linguaggi specifici, mentre l'ambiente flessibile consente maggiore personalizzazione.

  4. Servizi integrati: App Engine si integra con molti altri servizi di GCP, come Cloud SQL, Cloud Storage, Cloud Datastore e altro ancora. Questa integrazione semplifica l'architettura delle applicazioni basate su cloud.

  5. Versionamento e suddivisione del traffico: È possibile distribuire facilmente più versioni della tua applicazione e quindi suddividere il traffico tra di esse per test A/B o rollout graduale.

  6. Insight dell'applicazione: App Engine fornisce servizi integrati come logging, autenticazione utente e una serie di strumenti per lo sviluppatore per il monitoraggio e la gestione delle applicazioni.

  7. Sicurezza: Offre funzionalità di sicurezza integrate come versionamento dell'applicazione, certificati SSL/TLS per connessioni sicure e gestione delle identità e degli accessi.

Firewall

Un firewall semplice può essere configurato per le istanze in esecuzione delle App con le seguenti opzioni:

SA

L'account di servizio predefinito utilizzato da queste App è <nome-progetto>@appspot.gserviceaccount.com che ha il ruolo di Editor sul progetto e gli account di servizio all'interno dell'istanza di APP Engine funzionano con ambito cloud-platform (tra gli altri).

Archiviazione

Il codice sorgente e i metadati sono automaticamente archiviati in bucket con nomi come <id-progetto>.appspot.com e staging.<id-progetto>.appspot.com e <paese>.<id-progetto>.appspot.com

Ogni file dell'App è archiviato con lo sha1 del contenuto come nome file:

All'interno della cartella ae da staging.<id-progetto>.appspot.com, esiste una cartella per ogni versione con i file del codice sorgente e il file manifest.json che descrive i componenti dell'App:

{"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 ...

Contenitori

L'applicazione web sarà eseguita all'interno di un contenitore e Code Build viene utilizzato per costruire il contenitore.

URL e Regioni

La pagina web predefinita sarà esposta nell'URL <nome-progetto-unico>.appspot.com anche se l'URL delle versioni precedenti sarà leggermente diverso, come https://20240117t001540-dot-<nome-progetto-unico>.uc.r.appspot.com (nota il timestamp iniziale).

Potrebbe sembrare che sia possibile distribuire solo 1'applicazione web di app engine per regione, ma è possibile indicare service: <nomeservizio> nell'app.yml e creare un nuovo servizio (una nuova web). Il formato dell'URL per questa nuova web sarà <nomeservizio>-dot-<nome-progetto-unico>.appspot.com.

Enumerazione

Ogni volta che si carica un nuovo codice nell'App, viene creata una nuova versione. Tutte le versioni sono memorizzate e hanno persino un URL per accedervi. Modificare il codice di una vecchia versione potrebbe essere una ottima tecnica di persistenza.

Come per le Funzioni Cloud, c'è la possibilità che l'applicazione dipenda da segreti a cui si accede durante l'esecuzione tramite variabili d'ambiente. Queste variabili sono memorizzate in un file app.yaml a cui si può accedere nel seguente modo:

# 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>

Escalazione dei privilegi

pageGCP - AppEngine Privesc

Enumerazione non autenticata

pageGCP - App Engine Unauthenticated Enum

Post Esploitation

pageGCP - App Engine Post Exploitation

Persistenza

pageGCP - App Engine Persistence
Impara l'hacking su AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated