GCP Pentesting
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
在开始对 GCP 环境进行渗透测试之前,您需要了解一些基本知识,以帮助您理解需要做什么、如何查找错误配置以及如何利用它们。
诸如 组织 层次结构、权限 和其他基本概念在以下内容中进行了说明:
学习实验室
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
GCP 渗透测试/红队方法论
为了审计 GCP 环境,了解以下内容非常重要:使用了哪些 服务,什么是 被暴露的,谁有 访问 权限,以及内部 GCP 服务与 外部服务 是如何连接的。
从红队的角度来看,攻陷 GCP 环境的第一步是设法获取一些 凭据。以下是一些获取凭据的想法:
- 泄露 在 github(或类似平台)- OSINT
- 社交 工程(查看页面 Workspace Security)
- 密码 重用(密码泄露)
- GCP 托管应用程序中的漏洞
- 服务器端请求伪造 访问元数据端点
- 本地文件读取
/home/USERNAME/.config/gcloud/*C:\Users\USERNAME\.config\gcloud\*- 第三方 被攻破
- 内部 员工
或者通过 攻陷一个未认证的服务:
GCP - Unauthenticated Enum & Access
或者如果您正在进行 审查,您可以直接 请求凭据,角色如下:
GCP - Permissions for a Pentest
Note
在您成功获取凭据后,您需要知道 这些凭据属于谁,以及 他们可以访问什么,因此您需要进行一些基本的枚举:
基本枚举
SSRF
有关如何 枚举 GCP 元数据 的更多信息,请查看以下 hacktricks 页面:
Whoami
在 GCP 中,您可以尝试几种选项来猜测您是谁:
#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token
#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo
您还可以使用 API 端点 /userinfo 获取有关用户的更多信息:
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo
组织枚举
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects
Principals & IAM Enumeration
如果您拥有足够的权限,检查 GCP 账户中每个实体的权限将帮助您了解您和其他身份可以做什么,以及如何提升权限。
如果您没有足够的权限来枚举 IAM,您可以通过暴力破解来窃取它们以找出它们。
请查看如何进行枚举和暴力破解:
GCP - IAM, Principals & Org Policies Enum
Note
现在您对您的凭据有了一些信息(如果您是红队,希望您没有被发现)。是时候找出环境中正在使用哪些服务了。
在接下来的部分中,您可以查看一些枚举常见服务的方法。
Services Enumeration
GCP 拥有惊人的服务数量,在以下页面中,您将找到基本信息、枚举备忘单,如何避免检测,获取持久性以及其他关于其中一些服务的后期利用技巧:
请注意,您不需要手动执行所有工作,下面的帖子中您可以找到关于 自动工具 的部分。
此外,在此阶段,您可能会发现**更多暴露给未认证用户的服务,**您可能能够利用它们:
GCP - Unauthenticated Enum & Access
Privilege Escalation, Post Exploitation & Persistence
一旦您获得了一些云凭据或已妥协某个在云中运行的服务,最常见的方法是滥用被妥协账户可能拥有的错误配置权限。因此,您应该做的第一件事是枚举您的权限。
此外,在此枚举过程中,请记住权限可以在“组织”的最高级别设置。
Publicly Exposed Services
在枚举 GCP 服务时,您可能发现其中一些向互联网暴露元素(VM/容器端口、数据库或队列服务、快照或存储桶…)。
作为渗透测试者/红队成员,您应该始终检查是否可以在它们上找到敏感信息/漏洞,因为它们可能为您提供进一步访问 AWS 账户的机会。
在本书中,您应该找到关于如何查找暴露的 GCP 服务以及如何检查它们的信息。关于如何查找暴露的网络服务中的漏洞,我建议您搜索特定的服务:
GCP <–> Workspace Pivoting
妥协一个平台中的主体可能允许攻击者妥协另一个平台,请查看:
Automatic Tools
- 在GCloud 控制台中,您可以在 https://console.cloud.google.com/iam-admin/asset-inventory/dashboard 查看项目中使用的资源和 IAM。
- 在这里,您可以查看此 API 支持的资产: https://cloud.google.com/asset-inventory/docs/supported-asset-types
- 查看可以在 多个云中使用的工具。
- gcp_scanner:这是一个 GCP 资源扫描器,可以帮助确定某些凭据在 GCP 上拥有的访问级别。
# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
- gcp_enum: Bash 脚本,用于使用 gcloud cli 枚举 GCP 环境并将结果保存到文件中。
- GCP-IAM-Privilege-Escalation: 脚本用于枚举高 IAM 权限并在 GCP 中利用这些权限提升权限(我无法运行枚举脚本)。
- BF My GCP Permissions: 脚本用于暴力破解您的权限。
gcloud config & debug
# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token
# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
捕获 gcloud, gsutil… 网络
请记住,您可以使用 参数 --log-http 与 gcloud cli 一起 打印 工具正在执行的 请求。如果您不希望日志隐藏令牌值,请使用 gcloud config set log_http_redact_token false
此外,要拦截通信:
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True
# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem
# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file
在 gcloud 中配置 OAuth 令牌
为了使用从元数据端点提取的服务帐户 OAuth 令牌,您只需执行:
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list
# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file
参考
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

