GCP - App Engine Enum
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Informazioni di base
Google Cloud Platform's (GCP) App Engine è una piattaforma robusta e serverless progettata per lo sviluppo e l'hosting di applicazioni web su larga scala. Il design di questa piattaforma si concentra sull'ottimizzazione del processo di sviluppo e sul miglioramento della gestibilità delle applicazioni. Le caratteristiche e i vantaggi chiave di GCP's App Engine includono:
- Architettura Serverless: App Engine gestisce automaticamente l'infrastruttura, inclusa la fornitura di server, configurazione e scalabilità. Questo consente agli sviluppatori di concentrarsi sulla scrittura del codice senza preoccuparsi dell'hardware sottostante.
- Scalabilità Automatica: App Engine può scalare automaticamente la tua applicazione in risposta alla quantità di traffico che riceve. Si espande per gestire un aumento del traffico e si riduce quando il traffico diminuisce, aiutando a ottimizzare costi e prestazioni.
- Supporto per Linguaggi e Runtime: Supporta linguaggi di programmazione popolari come Java, Python, Node.js, Go, Ruby, PHP e .NET. Puoi eseguire le tue 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.
- Servizi Integrati: App Engine si integra con molti altri servizi GCP, come Cloud SQL, Cloud Storage, Cloud Datastore e altro. Questa integrazione semplifica l'architettura delle applicazioni basate su cloud.
- Versioning e Suddivisione del Traffico: Puoi facilmente distribuire più versioni della tua applicazione e poi suddividere il traffico tra di esse per test A/B o rollout graduali.
- Insights sull'Applicazione: App Engine fornisce servizi integrati come logging, autenticazione degli utenti e una suite di strumenti per sviluppatori per monitorare e gestire le applicazioni.
- Sicurezza: Offre funzionalità di sicurezza integrate come versioning delle applicazioni, certificati SSL/TLS per connessioni sicure e gestione dell'identità e degli accessi.
Firewall
Un semplice firewall può essere configurato per le istanze che eseguono le App con le seguenti opzioni:
.png)
SA
L'account di servizio predefinito utilizzato da queste App è <proj-name>@appspot.gserviceaccount.com
che ha il ruolo di Editor sul progetto e gli SA all'interno dell'istanza APP Engine funzionano con ambito cloud-platform (tra gli altri).
Storage
Il codice sorgente e i metadati sono automaticamente memorizzati in bucket con nomi come <proj-id>.appspot.com
e staging.<proj-id>.appspot.com
e <country>.<proj-id>.appspot.com
Ogni file dell'App è memorizzato con il sha1 del contenuto come nome file:
.png)
All'interno della cartella ae
di staging.<proj-id>.appspot.com
, esiste una cartella per 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'app web sarà eseguita all'interno di un contenitore e Code Build è utilizzato per costruire il contenitore.
URL e Regioni
La pagina web predefinita sarà esposta nell'URL <project-uniq-name>.appspot.com
, anche se l'URL delle versioni precedenti sarà leggermente diverso, come https://20240117t001540-dot-<project-uniq-name>.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: <servicename>
nel app.yml
e creare un nuovo servizio (un nuovo web). Il formato dell'URL per questo nuovo web sarà <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumerazione
caution
Ogni volta che carichi un nuovo codice nell'App, viene creata una nuova versione. Tutte le versioni sono memorizzate e hanno persino un URL per accedervi. Quindi modificare il codice di una vecchia versione potrebbe essere una grande tecnica di persistenza.
Come con le Cloud Functions, c'è la possibilità che l'applicazione si basi su segreti che vengono accessibili a runtime tramite variabili di ambiente. Queste variabili sono memorizzate in un file app.yaml
che può essere accessibile come segue:
# 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>
Escalation dei privilegi
Enum non autenticato
GCP - App Engine Unauthenticated Enum
Post Exploitation
GCP - App Engine Post Exploitation
Persistenza
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.