GCP - Cloudfunctions Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

cloudfunctions

Más información sobre Cloud Functions:

pageGCP - Cloud Functions Enum

cloudfunctions.functions.create, cloudfunctions.functions.sourceCodeSet, iam.serviceAccounts.actAs

Un atacante con estos privilegios puede crear una nueva Cloud Function con código arbitrario (malicioso) y asignarle una Cuenta de Servicio. Luego, filtrar el token de la Cuenta de Servicio desde los metadatos para escalar privilegios a la misma. Algunos privilegios para activar la función pueden ser necesarios.

Los scripts de explotación para este método se pueden encontrar aquí y aquí y el archivo .zip precompilado se puede encontrar aquí.

cloudfunctions.functions.update, cloudfunctions.functions.sourceCodeSet, iam.serviceAccounts.actAs

Un atacante con estos privilegios puede modificar el código de una Función e incluso modificar la cuenta de servicio adjunta con el objetivo de extraer el token. Algunos privilegios para activar la función pueden ser necesarios.

El script de explotación para este método se puede encontrar aquí.

cloudfunctions.functions.sourceCodeSet

Con este permiso puedes obtener una URL firmada para poder cargar un archivo en un bucket de función (pero el código de la función no se cambiará, aún necesitas actualizarlo)

# Generate the URL
curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/locations/{location}/functions:generateUploadUrl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{}'

No estoy seguro de cuán útil es esta única permiso desde la perspectiva de un atacante, pero es bueno saberlo.

cloudfunctions.functions.setIamPolicy, iam.serviceAccounts.actAs

Otórgate cualquiera de los privilegios anteriores .update o .create para escalar.

cloudfunctions.functions.update

Solo teniendo permisos de cloudfunctions, sin iam.serviceAccounts.actAs no podrás actualizar la función, POR LO QUE ESTA NO ES UNA ELEVACIÓN DE PRIVILEGIOS VÁLIDA.

Permisos de Escritura en el Bucket

Un atacante con permisos de escritura sobre el bucket donde se almacena el código de las Cloud Functions podrá modificar el código sobrescribiendo el function_code.zip y podrá ejecutar código arbitrario una vez que se ejecute.

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización