GCP - Enumeração do App Engine
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
O App Engine do Google Cloud Platform (GCP) é uma plataforma robusta e sem servidor, projetada para o desenvolvimento e hospedagem de aplicações web em grande escala. O design desta plataforma foca em simplificar o processo de desenvolvimento e melhorar a gerenciabilidade das aplicações. As principais características e benefícios do App Engine do GCP incluem:
- Arquitetura Sem Servidor: O App Engine gerencia automaticamente a infraestrutura, incluindo provisionamento de servidores, configuração e escalonamento. Isso permite que os desenvolvedores se concentrem em escrever código sem se preocupar com o hardware subjacente.
- Escalonamento Automático: O App Engine pode escalar automaticamente sua aplicação em resposta à quantidade de tráfego que recebe. Ele aumenta a capacidade para lidar com o tráfego aumentado e diminui quando o tráfego diminui, ajudando a otimizar custos e desempenho.
- Suporte a Linguagens e Runtime: Suporta linguagens de programação populares como Java, Python, Node.js, Go, Ruby, PHP e .NET. Você pode executar suas aplicações em um ambiente padrão ou flexível. O ambiente padrão é mais restritivo, mas altamente otimizado para linguagens específicas, enquanto o ambiente flexível permite mais personalização.
- Serviços Integrados: O App Engine se integra a muitos outros serviços do GCP, como Cloud SQL, Cloud Storage, Cloud Datastore e mais. Essa integração simplifica a arquitetura de aplicações baseadas em nuvem.
- Versionamento e Divisão de Tráfego: Você pode implantar facilmente várias versões de sua aplicação e, em seguida, dividir o tráfego entre elas para testes A/B ou lançamentos graduais.
- Insights da Aplicação: O App Engine fornece serviços integrados, como registro, autenticação de usuários e um conjunto de ferramentas para desenvolvedores para monitorar e gerenciar aplicações.
- Segurança: Oferece recursos de segurança integrados, como versionamento de aplicações, certificados SSL/TLS para conexões seguras e gerenciamento de identidade e acesso.
Firewall
Um firewall simples pode ser configurado para as instâncias que executam os Apps com as seguintes opções:
.png)
SA
A conta de serviço padrão usada por esses Apps é <proj-name>@appspot.gserviceaccount.com
que tem o papel de Editor sobre o projeto e os SAs dentro da instância do APP Engine executam com escopo de cloud-platform (entre outros).
Armazenamento
O código-fonte e os metadados são armazenados automaticamente em buckets com nomes como <proj-id>.appspot.com
e staging.<proj-id>.appspot.com
e <country>.<proj-id>.appspot.com
Cada arquivo do App é armazenado com o sha1 do conteúdo como nome do arquivo:
.png)
Dentro da pasta ae
de staging.<proj-id>.appspot.com
, existe uma pasta por versão com os arquivos do código-fonte e o arquivo manifest.json
que descreve os componentes do 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 ...
Containers
O aplicativo web será executado dentro de um container e Code Build é usado para construir o container.
URLs & Regions
A página web padrão será exposta na URL <project-uniq-name>.appspot.com
, embora a URL de versões mais antigas seja ligeiramente diferente, como https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(note o timestamp inicial).
Pode parecer que é possível implantar apenas 1 aplicativo de engine web por região, mas é possível indicar service: <servicename>
no app.yml
e criar um novo serviço (um novo web). O formato da URL para este novo web será <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumeration
caution
Toda vez que você faz upload de um novo código para o App, uma nova versão é criada. Todas as versões são armazenadas e elas até têm uma URL para acessá-las. Portanto, modificar o código de uma versão antiga pode ser uma ótima técnica de persistência.
Assim como com Cloud Functions, há uma chance de que a aplicação dependa de segredos que são acessados em tempo de execução via variáveis de ambiente. Essas variáveis são armazenadas em um arquivo app.yaml
que pode ser acessado da seguinte forma:
# 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>
Escalação de Privilégios
Enumeração Não Autenticada
GCP - App Engine Unauthenticated Enum
Pós Exploração
GCP - App Engine Post Exploitation
Persistência
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.