GCP - Cloudfunctions Privesc
cloudfunctions
Plus d'informations sur les Cloud Functions :
pageGCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Un attaquant avec ces privilèges peut créer une nouvelle Cloud Function avec un code arbitraire (malveillant) et lui attribuer un compte de service. Ensuite, il peut divulguer le jeton du compte de service à partir des métadonnées pour escalader les privilèges vers celui-ci. Certains privilèges pour déclencher la fonction peuvent être nécessaires.
Des scripts d'exploitation pour cette méthode peuvent être trouvés ici et ici et le fichier .zip préconstruit peut être trouvé ici.
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
Un attaquant avec ces privilèges peut modifier le code d'une fonction et même modifier le compte de service attaché dans le but d'extraire le jeton. Certains privilèges pour déclencher la fonction peuvent être nécessaires.
Le script d'exploitation pour cette méthode peut être trouvé ici.
cloudfunctions.functions.sourceCodeSet
cloudfunctions.functions.sourceCodeSet
Avec cette autorisation, vous pouvez obtenir une URL signée pour pouvoir téléverser un fichier dans un bucket de fonction (mais le code de la fonction ne sera pas modifié, vous devez toujours le mettre à jour)
Pas vraiment sûr de l'utilité de cette seule autorisation du point de vue d'un attaquant, mais bon à savoir.
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Accordez-vous l'un des privilèges précédents .update
ou .create
pour escalader.
cloudfunctions.functions.update
cloudfunctions.functions.update
Avoir uniquement les autorisations cloudfunctions
, sans iam.serviceAccounts.actAs
, ne vous permettra pas de mettre à jour la fonction DONC CE N'EST PAS UNE ESCALADE DE PRIVILÈGES VALIDE.
Autorisations d'écriture sur le bucket
Un attaquant avec des autorisations d'écriture sur le bucket où le code des Cloud Functions est stocké pourra modifier le code en l'écrasant le function_code.zip
et pourra exécuter du code arbitraire une fois qu'il est exécuté.
Références
Dernière mise à jour