GCP - Cloud Functions Enum
Cloud Functions
Google Cloud Functions sont conçues pour héberger votre code, qui s'exécute 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 sur les buckets dans GCP pourra lire le code des Cloud Functions. Le code est stocké dans un bucket comme l'un des suivants :
gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
gcf-v2-sources-<number>-<region>/<function-name>function-source.zip
Par exemple :
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip
Tout utilisateur avec des privilèges de lecture sur le bucket stockant la Cloud Function pourrait lire le code exécuté.
Artifact Registry
Si la cloud function est configurée de sorte que le conteneur Docker exécuté soit stocké dans un dépôt Artifact Registry à l'intérieur du projet, toute personne ayant un accès en lecture sur le dépôt pourra télécharger l'image et vérifier le code source. Pour plus d'informations, consultez :
GCP - Artifact Registry EnumSA
Si non spécifié, par défaut le App Engine Default Service Account avec des permissions d'éditeur sur le projet sera attaché à la Cloud Function.
Triggers, URL & Authentification
Lorsqu'une Cloud Function est créée, le trigger doit être spécifié. L'un des plus courants est HTTPS, cela créera une URL où la fonction peut être déclenchée via la navigation web. D'autres triggers sont pub/sub, Storage, Filestore...
Le format de l'URL est https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>
Lorsque le trigger 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 fichiers que ceux de la Cloud Function et est exécuté avec l'utilisateur www-data
.
Le disque n'est pas monté en lecture seule.
Énumération
Escalade de Privilèges
Sur la page suivante, vous pouvez voir comment abuser des permissions des cloud functions pour escalader les privilèges :
GCP - Cloudfunctions PrivescAccès Non Authentifié
GCP - Cloud Functions Unauthenticated EnumPost Exploitation
GCP - Cloud Functions Post ExploitationPersistance
GCP - Cloud Functions PersistenceRéférences
Last updated