GCP - Storage Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Platform (GCP) Storage es una solución de almacenamiento basada en la nube que proporciona almacenamiento de objetos altamente duradero y disponible para datos no estructurados. Ofrece varias clases de almacenamiento basadas en rendimiento, disponibilidad y costo, incluyendo Standard, Nearline, Coldline y Archive. GCP Storage también proporciona características avanzadas como políticas de ciclo de vida, versionado y control de acceso para gestionar y asegurar datos de manera efectiva.
El bucket puede almacenarse en una región, en 2 regiones o multi-región (predeterminado).
Almacenamiento Estándar: Esta es la opción de almacenamiento predeterminada que ofrece acceso de alto rendimiento y baja latencia a datos de acceso frecuente. Es adecuada para una amplia gama de casos de uso, incluyendo servir contenido web, transmitir medios y alojar tuberías de análisis de datos.
Almacenamiento Nearline: Esta clase de almacenamiento ofrece costos de almacenamiento más bajos y costos de acceso ligeramente más altos que el Almacenamiento Estándar. Está optimizado para datos de acceso poco frecuente, con una duración mínima de almacenamiento de 30 días. Es ideal para propósitos de respaldo y archivo.
Almacenamiento Coldline: Esta clase de almacenamiento está optimizada para almacenamiento a largo plazo de datos de acceso poco frecuente, con una duración mínima de almacenamiento de 90 días. Ofrece costos de almacenamiento más bajos que el Almacenamiento Nearline, pero con costos de acceso más altos.
Almacenamiento de Archivo: Esta clase de almacenamiento está diseñada para datos fríos que se acceden muy raramente, con una duración mínima de almacenamiento de 365 días. Ofrece los costos de almacenamiento más bajos de todas las opciones de almacenamiento de GCP, pero con los costos de acceso más altos. Es adecuada para la retención a largo plazo de datos que necesitan ser almacenados por razones de cumplimiento o regulación.
Autoclass: Si no sabes cuánto vas a acceder a los datos, puedes seleccionar Autoclass y GCP cambiará automáticamente el tipo de almacenamiento para ti para minimizar costos.
Por defecto, se recomienda controlar el acceso a través de IAM, pero también es posible habilitar el uso de ACLs. Si seleccionas usar solo IAM (predeterminado) y pasan 90 días, no podrás habilitar ACLs para el bucket.
Es posible habilitar el versionado, esto guardará versiones antiguas del archivo dentro del bucket. Es posible configurar el número de versiones que deseas mantener e incluso cuánto tiempo deseas que las versiones no actuales (versiones antiguas) vivan. Se recomienda 7 días para el tipo Estándar.
Los metadatos de una versión no actual se mantienen. Además, las ACLs de versiones no actuales también se mantienen, por lo que las versiones más antiguas pueden tener diferentes ACLs de la versión actual.
Aprende más en los docs.
Indica cuánto tiempo deseas prohibir la eliminación de Objetos dentro del bucket (muy útil para cumplimiento al menos). Solo una de versionado o política de retención puede habilitarse al mismo tiempo.
Por defecto, los objetos están cifrados utilizando claves gestionadas por Google, pero también podrías usar una clave de KMS.
Es posible dar acceso a usuarios externos (con o sin sesión en GCP) al contenido de los buckets. Por defecto, cuando se crea un bucket, tendrá desactivada la opción de exponer públicamente el bucket, pero con suficientes permisos se puede cambiar.
El formato de una URL para acceder a un bucket es https://storage.googleapis.com/<bucket-name>
o https://<bucket_name>.storage.googleapis.com
(ambos son válidos).
Una clave HMAC es un tipo de credencial y puede ser asociada con una cuenta de servicio o una cuenta de usuario en Cloud Storage. Usas una clave HMAC para crear firmas que luego se incluyen en las solicitudes a Cloud Storage. Las firmas muestran que una solicitud dada está autorizada por el usuario o la cuenta de servicio.
Las claves HMAC tienen dos partes principales, un ID de acceso y un secreto.
ID de Acceso: Una cadena alfanumérica vinculada a un servicio o cuenta de usuario específica. Cuando está vinculada a una cuenta de servicio, la cadena tiene 61 caracteres de longitud, y cuando está vinculada a una cuenta de usuario, la cadena tiene 24 caracteres de longitud. Lo siguiente muestra un ejemplo de un ID de acceso:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secreto: Una cadena codificada en Base-64 de 40 caracteres que está vinculada a un ID de acceso específico. Un secreto es una clave precompartida que solo tú y Cloud Storage conocen. Usas tu secreto para crear firmas como parte del proceso de autenticación. Lo siguiente muestra un ejemplo de un secreto:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Tanto el ID de acceso como el secreto identifican de manera única una clave HMAC, pero el secreto es información mucho más sensible, porque se utiliza para crear firmas.
Si recibes un error de permiso denegado al listar los buckets, es posible que aún tengas acceso al contenido. Así que, ahora que conoces la convención de nombres de los buckets, puedes generar una lista de nombres posibles y tratar de acceder a ellos:
Con permisos storage.objects.list
y storage.objects.get
, deberías poder enumerar todas las carpetas y archivos del bucket para descargarlos. Puedes lograr eso con este script de Python:
En la siguiente página puedes verificar cómo abusar de los permisos de almacenamiento para escalar privilegios:
GCP - Storage PrivescAprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)