GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions sont conçues pour héberger votre code, qui est exécuté en réponse à des événements, sans nécessiter la gestion d'un système d'exploitation hôte. De plus, ces fonctions prennent en charge le stockage de variables d'environnement, que le code peut utiliser.
Stockage
Le code des Cloud Functions est stocké dans GCP Storage. Par conséquent, toute personne ayant un accès en lecture aux buckets dans GCP pourra lire le code des Cloud Functions. Le code est stocké dans un bucket comme suit :
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
par exemple :
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip
Tout utilisateur ayant des privilèges d'écriture sur le bucket stockant la Cloud Function pourrait écraser le code exécuté.
SA
Si non spécifié, par défaut le Compte de service par défaut de l'App Engine avec des permissions d'Éditeur sur le projet sera attaché à la Cloud Function.
Déclencheurs, URL & Authentification
Lorsqu'une Cloud Function est créée, le déclencheur doit être spécifié. Un déclencheur courant est HTTPS, cela va créer une URL où la fonction peut être déclenchée via la navigation web. D'autres déclencheurs sont pub/sub, Stockage, Filestore...
Le format de l'URL est https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Lorsque le déclencheur HTTPS est utilisé, il est également indiqué si l'appelant doit avoir une autorisation IAM pour appeler la fonction ou si tout le monde peut simplement l'appeler :
À l'intérieur de la Cloud Function
Le code est téléchargé à l'intérieur du dossier /workspace
avec les mêmes noms de fichier que ceux des fichiers dans la Cloud Function et est exécuté avec l'utilisateur www-data
.
Le disque n'est pas monté en lecture seule.
Énumération
Élévation de privilèges
Sur la page suivante, vous pouvez vérifier comment abuser des autorisations de fonction cloud pour élever les privilèges:
pageGCP - Cloudfunctions PrivescAccès non authentifié
pageGCP - Cloud Functions Unauthenticated EnumPost-exploitation
pageGCP - Cloud Functions Post ExploitationPersistance
pageGCP - Cloud Functions PersistenceRéférences
Dernière mise à jour