GCP - App Engine Enum
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Informazioni di Base
Google Cloud Platform's (GCP) App Engine è una piattaforma serverless robusta 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 sul miglioramento della gestibilità delle applicazioni. Le caratteristiche e i vantaggi principali di GCP's App Engine includono:
Architettura Serverless: App Engine gestisce automaticamente l'infrastruttura, inclusa la fornitura, configurazione e scalabilità dei server. Questo permette 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. Scala verso l'alto per gestire l'aumento del traffico e verso il basso quando il traffico diminuisce, aiutando a ottimizzare i costi e le 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 altri. Questa integrazione semplifica l'architettura delle applicazioni basate su cloud.
Versioning e Traffic Splitting: Puoi facilmente distribuire più versioni della tua applicazione e poi dividere il traffico tra di esse per test A/B o rollout graduali.
Application Insights: 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 il versioning delle applicazioni, certificati SSL/TLS per connessioni sicure e gestione delle identità e degli accessi.
Firewall
Un semplice firewall può essere configurato per le istanze che eseguono le App con le seguenti opzioni:
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F109713985-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FSeBtjKurjq2uRti4Bnzw%252Fuploads%252Fgit-blob-9eee0302ebcef68b39c16c0fbd1023cd59f3a380%252Fimage%2520%28246%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=16d027e1&sv=1)
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 account di servizio all'interno dell'istanza APP Engine vengono eseguiti con l'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 del file:
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F109713985-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FSeBtjKurjq2uRti4Bnzw%252Fuploads%252Fgit-blob-73f8be8802a30c902eba1406d36fcece366d42a5%252Fimage%2520%2882%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5de9fbb0&sv=1)
All'interno della cartella ae
da 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:
Containers
L'app web verrà eseguita all'interno di un container e Code Build viene utilizzato per costruire il container.
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 app engine per regione, ma è possibile indicare service: <servicename>
nel app.yml
e creare un nuovo servizio (una nuova web). Il formato dell'URL per questa nuova web sarà <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumerazione
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 Cloud Functions, c'è la possibilità che l'applicazione si basi su segreti che vengono accessi in tempo reale tramite variabili d'ambiente. Queste variabili sono memorizzate in un file app.yaml
che può essere accesso come segue:
Escalation di Privilegi
GCP - AppEngine PrivescEnum Non Autenticato
GCP - App Engine Unauthenticated EnumPost Exploitation
GCP - App Engine Post ExploitationPersistenza
GCP - App Engine PersistenceImpara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated