GCP - Storage Privesc

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

Otras formas de apoyar a HackTricks:

Almacenamiento

Información Básica:

pageGCP - Storage Enum

storage.objects.get

Este permiso te permite descargar archivos almacenados dentro de Cloud Storage. Esto podría permitirte escalar privilegios porque en algunas ocasiones se guarda información sensible allí. Además, algunos servicios de GCP almacenan su información en buckets:

  • GCP Composer: Cuando creas un Entorno de Composer, el código de todos los DAGs se guardará dentro de un bucket. Estas tareas pueden contener información interesante en su código.

  • GCR (Container Registry): La imagen de los contenedores se almacena dentro de buckets, lo que significa que si puedes leer los buckets podrás descargar las imágenes y buscar fugas y/o código fuente.

storage.objects.setIamPolicy

Puedes darte permiso para abusar de cualquiera de los escenarios anteriores de esta sección.

storage.buckets.setIamPolicy

Para un ejemplo de cómo modificar permisos con este permiso, consulta esta página:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

La función de "interoperabilidad" de Cloud Storage, diseñada para interacciones entre nubes como con AWS S3, implica la creación de claves HMAC para Cuentas de Servicio y usuarios. Un atacante puede explotar esto generando una clave HMAC para una Cuenta de Servicio con privilegios elevados, escalando así privilegios dentro de Cloud Storage. Aunque las claves HMAC asociadas a usuarios solo se pueden recuperar a través de la consola web, tanto las claves de acceso como las secretas permanecen accesibles de forma perpetua, permitiendo un posible acceso de respaldo al almacenamiento. Por el contrario, las claves HMAC vinculadas a Cuentas de Servicio son accesibles a través de la API, pero sus claves de acceso y secretas no se pueden recuperar después de la creación, añadiendo un nivel de complejidad para el acceso continuo.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

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

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

storage.objects.create, storage.objects.delete = Permisos de escritura en Storage

Para crear un nuevo objeto dentro de un bucket necesitas storage.objects.create y, según la documentación, también necesitas storage.objects.delete para modificar un objeto existente.

Una explotación muy común de buckets donde puedes escribir en la nube es en caso de que el bucket esté guardando archivos de un servidor web, podrías ser capaz de almacenar nuevo código que será utilizado por la aplicación web.

Composer

Composer es Apache Airflow gestionado dentro de GCP. Tiene varias características interesantes:

  • Se ejecuta dentro de un cluster de GKE, por lo que el SA que utiliza el cluster es accesible por el código que se ejecuta dentro de Composer

  • Almacena el código en un bucket, por lo tanto, cualquiera con acceso de escritura sobre ese bucket va a poder cambiar/agregar un código DGA (el código que Apache Airflow ejecutará) Entonces, si tienes acceso de escritura sobre el bucket que Composer está usando para almacenar el código, puedes privesc al SA que se ejecuta en el cluster de GKE.

Cloud Functions

  • El código de Cloud Functions se almacena en Storage, por lo que sobrescribirlo, es posible ejecutar código arbitrario.

App Engine

  • El código fuente de App Engine se almacena en buckets, sobrescribir el código podría hacer posible ejecutar código arbitrario. ESTO NO ES POSIBLE

  • Parece que las capas del contenedor se almacenan en el bucket, ¿tal vez cambiando esas?

GCR

  • Google Container Registry almacena las imágenes dentro de buckets, si puedes escribir esos buckets podrías ser capaz de moverte lateralmente a donde esos buckets se están ejecutando.

  • El bucket utilizado por GCR tendrá una URL similar a gs://<eu/usa/asia/nada>.artifacts.<proyecto>.appspot.com (Los subdominios de nivel superior están especificados aquí).

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