GCP - local privilege escalation ssh pivoting
En este escenario vamos a suponer que has comprometido una cuenta sin privilegios dentro de una VM en un proyecto de Compute Engine.
Sorprendentemente, los permisos de GCP de la instancia de Compute Engine que has comprometido pueden ayudarte a escalar privilegios localmente dentro de una máquina. Aunque esto no siempre sea muy útil en un entorno de nube, es bueno saber que es posible.
Leer los scripts
Las instancias de Compute probablemente estén allí para ejecutar algunos scripts y realizar acciones con sus cuentas de servicio.
Dado que IAM es muy granular, una cuenta puede tener privilegios de lectura/escritura sobre un recurso pero no tener privilegios de lista.
Un gran ejemplo hipotético de esto es una instancia de Compute que tiene permiso para leer/escribir copias de seguridad en un bucket de almacenamiento llamado instance82736-long-term-xyz-archive-0332893
.
Al ejecutar gsutil ls
desde la línea de comandos no devuelve nada, ya que la cuenta de servicio carece del permiso IAM storage.buckets.list
. Sin embargo, si ejecutas gsutil ls gs://instance82736-long-term-xyz-archive-0332893
podrías encontrar una copia de seguridad completa del sistema de archivos, lo que te daría acceso en texto claro a datos a los que tu cuenta de Linux local no tiene acceso.
Es posible que encuentres este nombre de bucket dentro de un script (en bash, Python, Ruby...).
Metadatos personalizados
Los administradores pueden agregar metadatos personalizados a nivel de instancia y proyecto. Esto es simplemente una forma de pasar pares clave/valor arbitrarios a una instancia, y comúnmente se utiliza para variables de entorno y scripts de inicio/apagado.
Además, es posible agregar userdata, que es un script que se ejecutará cada vez que la máquina se inicie o reinicie y que se puede acceder también desde el punto final de metadatos.
Para más información, consulta:
Abuso de permisos IAM
La mayoría de los permisos propuestos a continuación se otorgan al SA de Compute predeterminado, el único problema es que el alcance de acceso predeterminado evita que el SA los utilice. Sin embargo, si se habilita el alcance de acceso de cloud-platform
o simplemente el alcance de compute
, podrás abusar de ellos.
Revisa los siguientes permisos:
Buscar claves en el sistema de archivos
Verifica si otros usuarios han iniciado sesión en gcloud dentro de la máquina y han dejado sus credenciales en el sistema de archivos:
Estos son los archivos más interesantes:
~/.config/gcloud/credentials.db
~/.config/gcloud/legacy_credentials/[CUENTA]/adc.json
~/.config/gcloud/legacy_credentials/[CUENTA]/.boto
~/.credentials.json
Más expresiones regulares de claves API
Referencias
Last updated