GCP - App Engine Enum
Reading time: 6 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
La plateforme App Engine de Google Cloud Platform (GCP) est une plateforme robuste et sans serveur conçue pour le développement et l'hébergement d'applications web à grande échelle. La conception de cette plateforme se concentre sur l'optimisation du processus de développement et l'amélioration de la gestion des applications. Les principales caractéristiques et avantages de l'App Engine de GCP incluent :
- Architecture sans serveur : App Engine gère automatiquement l'infrastructure, y compris la provision de serveurs, la configuration et la mise à l'échelle. Cela permet aux développeurs de se concentrer sur l'écriture de code sans se soucier du matériel sous-jacent.
- Mise à l'échelle automatique : App Engine peut automatiquement mettre à l'échelle votre application en fonction du volume de trafic qu'elle reçoit. Il augmente la capacité pour gérer un trafic accru et la réduit lorsque le trafic diminue, aidant à optimiser les coûts et les performances.
- Support des langages et des environnements d'exécution : Il prend en charge des langages de programmation populaires tels que Java, Python, Node.js, Go, Ruby, PHP et .NET. Vous pouvez exécuter vos applications dans un environnement standard ou flexible. L'environnement standard est plus restrictif mais hautement optimisé pour des langages spécifiques, tandis que l'environnement flexible permet plus de personnalisation.
- Services intégrés : App Engine s'intègre à de nombreux autres services GCP, comme Cloud SQL, Cloud Storage, Cloud Datastore, et plus encore. Cette intégration simplifie l'architecture des applications basées sur le cloud.
- Versionnage et répartition du trafic : Vous pouvez facilement déployer plusieurs versions de votre application et ensuite répartir le trafic entre elles pour des tests A/B ou des déploiements progressifs.
- Insights sur l'application : App Engine fournit des services intégrés tels que la journalisation, l'authentification des utilisateurs et une suite d'outils pour les développeurs pour surveiller et gérer les applications.
- Sécurité : Il offre des fonctionnalités de sécurité intégrées telles que le versionnage des applications, des certificats SSL/TLS pour des connexions sécurisées, et la gestion des identités et des accès.
Pare-feu
Un simple pare-feu peut être configuré pour les instances exécutant les applications avec les options suivantes :
.png)
SA
Le compte de service par défaut utilisé par ces applications est <proj-name>@appspot.gserviceaccount.com
qui a le rôle Éditeur sur le projet et les comptes de service à l'intérieur de l'instance APP Engine fonctionnent avec le champ cloud-platform (entre autres).
Stockage
Le code source et les métadonnées sont automatiquement stockés dans des buckets avec des noms tels que <proj-id>.appspot.com
et staging.<proj-id>.appspot.com
et <country>.<proj-id>.appspot.com
Chaque fichier de l'application est stocké avec le sha1 du contenu comme nom de fichier :
.png)
Dans le dossier ae
de staging.<proj-id>.appspot.com
, un dossier par version existe avec les fichiers de code source et le fichier manifest.json
qui décrit les composants de l'application :
{"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 ...
Conteneurs
L'application web sera finalement exécutée à l'intérieur d'un conteneur et Code Build est utilisé pour construire le conteneur.
URLs & Régions
La page web par défaut sera exposée à l'URL <project-uniq-name>.appspot.com
bien que l'URL des versions plus anciennes soit légèrement différente, comme https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(notez le timestamp initial).
Il peut sembler qu'il n'est possible de déployer qu'une seule application web d'engine par région, mais il est possible d'indiquer service: <servicename>
dans le app.yml
et de créer un nouveau service (un nouveau web). Le format de l'URL pour ce nouveau web sera <servicename>-dot-<project-uniq-name>.appspot.com
.
Énumération
caution
Chaque fois que vous téléchargez un nouveau code sur l'App, une nouvelle version est créée. Toutes les versions sont stockées et elles ont même une URL pour y accéder. Donc, modifier le code d'une ancienne version pourrait être une grande technique de persistance.
Comme avec les Cloud Functions, il y a une chance que l'application dépende de secrets qui sont accessibles à l'exécution via des variables d'environnement. Ces variables sont stockées dans un fichier app.yaml
qui peut être accessible comme suit :
# 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>
Escalade de privilèges
Enum non authentifié
GCP - App Engine Unauthenticated Enum
Post exploitation
GCP - App Engine Post Exploitation
Persistance
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.