GCP - Storage Privesc
存储
基本信息:
GCP - Storage Enumstorage.objects.get
storage.objects.get
此权限允许您下载存储在 Cloud Storage 中的文件。这可能会让您提升权限,因为在某些情况下敏感信息会保存在那里。此外,一些 GCP 服务将其信息存储在桶中:
GCP Composer:当您创建一个 Composer 环境时,所有 DAG 的代码将保存在一个桶中。这些任务的代码中可能包含有趣的信息。
GCR (容器注册表):容器的镜像存储在桶中,这意味着如果您可以读取这些桶,您将能够下载镜像并搜索泄漏和/或源代码。
storage.objects.setIamPolicy
storage.objects.setIamPolicy
您可以授予自己权限以滥用本节中的任何先前场景。
storage.buckets.setIamPolicy
storage.buckets.setIamPolicy
有关如何使用此权限修改权限的示例,请查看此页面:
GCP - Public Buckets Privilege Escalationstorage.hmacKeys.create
storage.hmacKeys.create
Cloud Storage 的“互操作性”功能,旨在实现与 AWS S3 等的跨云交互,涉及为服务账户和用户创建 HMAC 密钥。攻击者可以通过为具有提升权限的服务账户生成 HMAC 密钥来利用这一点,从而在 Cloud Storage 中提升权限。虽然与用户相关的 HMAC 密钥只能通过网络控制台检索,但访问密钥和秘密密钥始终保持可访问,允许潜在的备份访问存储。相反,与服务账户关联的 HMAC 密钥可以通过 API 访问,但其访问密钥和秘密密钥在创建后无法检索,为持续访问增加了一层复杂性。
另一个针对此方法的利用脚本可以在 这里 找到。
storage.objects.create
, storage.objects.delete
= 存储写入权限
storage.objects.create
, storage.objects.delete
= 存储写入权限为了在存储桶中创建新对象,您需要 storage.objects.create
,并且根据 文档,您还需要 storage.objects.delete
来修改现有对象。
在可以在云中写入的存储桶中,常见的利用是如果存储桶保存了 web 服务器文件,您可能能够存储新代码,该代码将被 web 应用程序使用。
Composer
Composer 是在 GCP 中管理的 Apache Airflow。它有几个有趣的特性:
它运行在 GKE 集群中,因此集群使用的 SA 是可访问的,由在 Composer 中运行的代码访问
它将代码存储在存储桶中,因此,任何对该存储桶具有写入访问权限的人都将能够更改/添加 DGA 代码(Apache Airflow 将执行的代码) 然后,如果您对 Composer 用于存储代码的存储桶具有写入访问权限,您可以提升到在 GKE 集群中运行的 SA。
Cloud Functions
Cloud Functions 代码存储在存储中,因此覆盖它,可以执行任意代码。
App Engine
App Engine 源代码存储在存储桶中,覆盖代码可能会执行任意代码。这是不可能的
看起来容器层存储在存储桶中,可能更改那些?
GCR
Google Container Registry 将图像存储在存储桶中,如果您可以写入这些存储桶,您可能能够横向移动到这些存储桶运行的地方。
GCR 使用的存储桶将具有类似于
gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com
的 URL(顶级子域在 这里 指定)。
参考文献
Last updated