GCP Pentesting
Información Básica
Antes de comenzar el pentesting de un entorno de GCP, hay algunas cosas básicas que necesitas saber sobre cómo funciona para ayudarte a entender lo que necesitas hacer, cómo encontrar configuraciones incorrectas y cómo explotarlas.
Conceptos como la jerarquía de organización, permisos y otros conceptos básicos se explican en:
pageGCP - Basic InformationLaboratorios para aprender
Metodología de Pentester/Equipo Rojo de GCP
Para auditar un entorno de GCP es muy importante saber: qué servicios se están utilizando, qué está expuesto, quién tiene acceso a qué, y cómo están conectados los servicios internos de GCP con los servicios externos.
Desde el punto de vista de un Equipo Rojo, el primer paso para comprometer un entorno de GCP es lograr obtener algunas credenciales. Aquí tienes algunas ideas sobre cómo hacerlo:
Fugas en github (o similar) - OSINT
Ingeniería Social (Consulta la página Seguridad de Workspace)
Reutilización de contraseñas (fugas de contraseñas)
Vulnerabilidades en Aplicaciones Alojadas en GCP
Server Side Request Forgery con acceso al punto final de metadatos
Lectura de Archivos Locales
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3ros comprometidos
Empleado Interno
O comprometiendo un servicio no autenticado expuesto:
pageGCP - Unauthenticated Enum & AccessO si estás realizando una revisión, podrías simplemente solicitar credenciales con estos roles:
pageGCP - Permissions for a PentestDespués de haber logrado obtener credenciales, necesitas saber a quién pertenecen esas credenciales, y a qué tienen acceso, por lo que necesitas realizar una enumeración básica:
Enumeración Básica
SSRF
Para obtener más información sobre cómo enumerar metadatos de GCP, consulta la siguiente página de hacktricks:
Whoami
En GCP puedes probar varias opciones para intentar adivinar quién eres:
Enumeración de la Organización
Principales y Enumeración de IAM
Si tienes suficientes permisos, verificar los privilegios de cada entidad dentro de la cuenta de GCP te ayudará a entender qué pueden hacer tú y otras identidades y cómo escalar privilegios.
Si no tienes suficientes permisos para enumerar IAM, puedes robarlos por fuerza bruta para descubrirlos. Consulta cómo hacer la enumeración y fuerza bruta en:
pageGCP - IAM, Principals & Org Policies EnumAhora que tienes información sobre tus credenciales (y si eres un equipo rojo, esperemos que no hayas sido detectado). Es hora de averiguar qué servicios se están utilizando en el entorno. En la siguiente sección puedes consultar algunas formas de enumerar algunos servicios comunes.
Enumeración de Servicios
GCP tiene una cantidad asombrosa de servicios, en la siguiente página encontrarás información básica, hojas de trucos de enumeración, cómo evitar la detección, obtener persistencia y otros trucos de post-explotación sobre algunos de ellos:
pageGCP - ServicesTen en cuenta que no necesitas realizar todo el trabajo manualmente, más abajo en esta publicación puedes encontrar una sección sobre herramientas automáticas.
Además, en esta etapa podrías haber descubierto más servicios expuestos a usuarios no autenticados, podrías ser capaz de explotarlos:
pageGCP - Unauthenticated Enum & AccessEscalada de Privilegios, Post Explotación y Persistencia
La forma más común una vez que has obtenido algunas credenciales de la nube o has comprometido algún servicio en ejecución dentro de una nube es abusar de los privilegios mal configurados que la cuenta comprometida pueda tener. Por lo tanto, lo primero que debes hacer es enumerar tus privilegios.
Además, durante esta enumeración, recuerda que los permisos pueden establecerse en el nivel más alto de "Organización" también.
pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - PersistenceServicios Expuestos Públicamente
Mientras enumeras los servicios de GCP, es posible que hayas encontrado algunos de ellos exponiendo elementos a Internet (puertos de VM/Contenedores, bases de datos o servicios de colas, instantáneas o buckets...). Como pentester/equipo rojo, siempre debes verificar si puedes encontrar información sensible/vulnerabilidades en ellos, ya que podrían proporcionarte acceso adicional a la cuenta de GCP.
En este libro deberías encontrar información sobre cómo encontrar servicios de GCP expuestos y cómo verificarlos. Sobre cómo encontrar vulnerabilidades en servicios de red expuestos, te recomendaría buscar el servicio específico en:
Pivoteo GCP <--> Workspace
Comprometer a los principales en una plataforma podría permitir a un atacante comprometer la otra, revísalo en:
pageGCP <--> Workspace PivotingHerramientas Automáticas
En la consola de GCloud, en https://console.cloud.google.com/iam-admin/asset-inventory/dashboard puedes ver los recursos y IAMs utilizados por el proyecto.
Aquí puedes ver los activos admitidos por esta API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
Consulta las herramientas que se pueden usar en varias nubes aquí.
gcp_scanner: Este es un escáner de recursos de GCP que puede ayudar a determinar qué nivel de acceso poseen ciertas credenciales en GCP.
gcp_enum: Script de Bash para enumerar un entorno de GCP utilizando la interfaz de línea de comandos de gcloud y guardar los resultados en un archivo.
GCP-IAM-Privilege-Escalation: Scripts para enumerar altos privilegios de IAM y para escalar privilegios en GCP abusando de ellos (no pude hacer funcionar el script de enumeración).
Configuración y depuración de gcloud
Captura de red de gcloud, gsutil...
Recuerda que puedes utilizar el parámetro --log-http
con la interfaz de línea de comandos de gcloud
para imprimir las solicitudes que la herramienta está realizando. Si no deseas que los registros redacten el valor del token, utiliza gcloud config set log_http_redact_token false
Además, para interceptar la comunicación:
Configurar token de OAuth en gcloud
Para utilizar un token de OAuth de la cuenta de servicio exfiltrado desde el punto de metadatos, simplemente puedes hacer lo siguiente:
Referencias
Última actualización