GCP - Storage Privesc

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Storage

Informations de base :

pageGCP - Storage Enum

storage.objects.get

Cette permission vous permet de télécharger des fichiers stockés dans Cloud Storage. Cela peut potentiellement vous permettre d'escalader les privilèges car dans certains cas, des informations sensibles y sont enregistrées. De plus, certains services GCP stockent leurs informations dans des buckets :

  • GCP Composer : Lorsque vous créez un environnement Composer, le code de tous les DAGs sera sauvegardé dans un bucket. Ces tâches peuvent contenir des informations intéressantes dans leur code.

  • GCR (Container Registry) : L'image des conteneurs est stockée dans des buckets, ce qui signifie que si vous pouvez lire les buckets, vous pourrez télécharger les images et rechercher des fuites et/ou du code source.

storage.objects.setIamPolicy

Vous pouvez vous donner la permission d'abuser de n'importe quel scénario précédent de cette section.

storage.buckets.setIamPolicy

Pour un exemple de modification des permissions avec cette permission, consultez cette page :

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

La fonctionnalité "interopérabilité" de Cloud Storage, conçue pour les interactions entre différents clouds comme avec AWS S3, implique la création de clés HMAC pour les comptes de service et les utilisateurs. Un attaquant peut exploiter cela en générant une clé HMAC pour un compte de service avec des privilèges élevés, permettant ainsi une élévation de privilèges au sein de Cloud Storage. Alors que les clés HMAC associées aux utilisateurs ne sont récupérables que via la console web, les clés d'accès et secrètes restent toujours accessibles, permettant un accès potentiel au stockage de sauvegarde. En revanche, les clés HMAC liées aux comptes de service sont accessibles via l'API, mais leurs clés d'accès et secrètes ne sont pas récupérables après la création, ajoutant une couche de complexité pour un accès continu.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

Un autre script d'exploitation pour cette méthode peut être trouvé ici.

storage.objects.create, storage.objects.delete = Permissions d'écriture sur le stockage

Pour créer un nouvel objet dans un compartiment, vous avez besoin de storage.objects.create et, selon la documentation, vous avez également besoin de storage.objects.delete pour modifier un objet existant.

Une exploitation très courante des compartiments où vous pouvez écrire dans le cloud est dans le cas où le compartiment sauvegarde des fichiers de serveur web, vous pourriez être capable de stocker du nouveau code qui sera utilisé par l'application web.

Composer

Composer est Apache Airflow géré à l'intérieur de GCP. Il présente plusieurs caractéristiques intéressantes :

  • Il fonctionne à l'intérieur d'un cluster GKE, donc le SA que le cluster utilise est accessible par le code exécuté à l'intérieur de Composer

  • Il stocke le code dans un compartiment, donc, toute personne ayant un accès en écriture sur ce compartiment va pouvoir changer/ajouter un code DGA (le code qu'Apache Airflow exécutera) Alors, si vous avez un accès en écriture sur le compartiment que Composer utilise pour stocker le code, vous pouvez privesc au SA exécuté dans le cluster GKE.

Cloud Functions

  • Le code des Cloud Functions est stocké dans Storage, donc le réécrire permet de potentiellement exécuter du code arbitraire.

App Engine

  • Le code source de App Engine est stocké dans des compartiments, réécrire le code pourrait permettre d'exécuter du code arbitraire. CECI N'EST PAS POSSIBLE

  • Il semble que les couches de conteneurs soient stockées dans le compartiment, peut-être les changer ?

GCR

  • Google Container Registry stocke les images à l'intérieur de compartiments, si vous pouvez écrire dans ces compartiments vous pourriez être capable de vous déplacer latéralement là où ces compartiments sont exécutés.

  • Le compartiment utilisé par GCR aura une URL similaire à gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com (Les sous-domaines de premier niveau sont spécifiés ici).

Références

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Dernière mise à jour