GCP - Compute Enum

支持 HackTricks

GCP VPC & Networking

了解其工作原理:

GCP - VPC & Networking

枚举

# List networks
gcloud compute networks list
gcloud compute networks describe <network>

# List subnetworks
gcloud compute networks subnets list
gcloud compute networks subnets get-iam-policy <name> --region <region>
gcloud compute networks subnets describe <name> --region <region>

# List FW rules in networks
gcloud compute firewall-rules list --format="table(
name,
network,
direction,
priority,
sourceRanges.list():label=SRC_RANGES,
destinationRanges.list():label=DEST_RANGES,
allowed[].map().firewall_rule().list():label=ALLOW,
denied[].map().firewall_rule().list():label=DENY,
sourceTags.list():label=SRC_TAGS,
sourceServiceAccounts.list():label=SRC_SVC_ACCT,
targetTags.list():label=TARGET_TAGS,
targetServiceAccounts.list():label=TARGET_SVC_ACCT,
disabled
)"

# List Hierarchical Firewalls
gcloud compute firewall-policies list  (--folder <value>| --organization <value>)
gcloud compute firewall-policies describe <fw_policy>
gcloud compute firewall-policies list-rules <fw_policy>

# Get Firewalls of each region
gcloud compute network-firewall-policies list
## Get final FWs applied in a region
gcloud compute network-firewall-policies get-effective-firewalls --network=<vpc_name> --region <region>

你可以通过以下链接轻松找到具有开放防火墙规则的 compute instances:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_firewall_enum

Compute instances

这是你可以在 GCP 内运行虚拟机的方式。查看此页面以获取更多信息:

GCP - Compute Instances

Enumeration

# Get list of zones
# It's interesting to know which zones are being used
gcloud compute regions list | grep -E "NAME|[^0]/"

# List compute instances & get info
gcloud compute instances list
gcloud compute instances describe <instance name>
gcloud compute instances get-iam-policy <instance> --zone=ZONE
gcloud compute instances get-screenshot <instance name> # Instace must have "Display Device" enabled
gcloud compute instances os-inventory list-instances # Get OS info of instances (OS Config agent is running on instances)


# Enumerate disks
gcloud compute disks list
gcloud compute disks describe <disk>
gcloud compute disks get-iam-policy <disk>

有关如何SSH修改实例的元数据提升权限的更多信息,请查看此页面:

GCP - local privilege escalation ssh pivoting

提权

在以下页面中,您可以查看如何滥用计算权限来提升权限

GCP - Compute Privesc

未认证枚举

GCP - Compute Unauthenticated Enum

利用后操作

GCP - Compute Post Exploitation

持久化

GCP - Compute Persistence

串行控制台日志

Compute Engine 串行控制台日志是一项功能,允许您查看和诊断虚拟机实例的启动和操作系统日志

串行控制台日志提供了实例启动过程的低级视图,包括内核消息、初始化脚本和启动过程中发生的其他系统事件。这对于调试启动问题、识别配置错误或软件错误,或排除网络连接问题非常有用。

这些日志可能会暴露系统日志中的敏感信息,低权限用户通常无法看到,但如果拥有适当的 IAM 权限,您可能可以读取它们。

您可以使用以下 gcloud 命令 查询串行端口日志(所需权限为 compute.instances.getSerialPortOutput):

gcloud compute instances get-serial-port-output <instance-name>

启动脚本输出

可以通过执行以下命令查看来自VM的启动脚本输出

sudo journalctl -u google-startup-scripts.service

OS Configuration Manager

您可以使用操作系统配置管理服务来部署、查询和维护一致的配置(所需状态和软件)以用于您的 VM 实例(VM)。在 Compute Engine 上,您必须使用guest policies来维护 VM 上的一致软件配置。

操作系统配置管理功能允许您定义配置策略,指定应安装哪些软件包、应启用哪些服务以及应在您的 VM 上存在哪些文件或配置。您可以使用声明式方法来管理 VM 的软件配置,这使您能够更轻松地自动化和扩展配置管理过程。

这也允许通过 IAM 权限登录实例,因此对于权限提升和横向移动非常有用。

为了在整个项目或实例中启用 os-config,您只需在所需级别设置元数据键**enable-oslogintrue 此外,您可以将元数据enable-oslogin-2fa设置为true**以启用 2fa。

当您在创建实例时启用它时,元数据键将自动设置。

关于OS-config 中的 2fa它仅适用于用户,如果是 SA(如 compute SA),则不需要任何额外的东西。

Enumeration

gcloud compute os-config patch-deployments list
gcloud compute os-config patch-deployments describe <patch-deployment>

gcloud compute os-config patch-jobs list
gcloud compute os-config patch-jobs describe <patch-job>

Images

Custom Images

自定义计算镜像可能包含敏感信息或其他可被利用的漏洞配置。

创建镜像时,你可以选择3种加密类型:使用Google管理的密钥(默认)、来自KMS的密钥或客户提供的原始密钥

Enumeration

你可以使用以下命令查询项目中非标准镜像的列表:

gcloud compute machine-images list
gcloud compute machine-images describe <name>
gcloud compute machine-images get-iam-policy <name>

你可以从任何镜像中以多种格式导出 虚拟磁盘。以下命令将以 qcow2 格式导出镜像 test-image,允许你下载文件并在本地构建 VM 以进行进一步调查:

gcloud compute images export --image test-image \
--export-format qcow2 --destination-uri [BUCKET]

# Execute container inside a docker
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

权限提升

检查 Compute Instances 权限提升部分。

自定义实例模板

一个实例模板 定义实例属性,以帮助部署一致的配置。这些可能包含与运行实例的自定义元数据相同类型的敏感数据。您可以使用以下命令进行调查:

# List the available templates
gcloud compute instance-templates list

# Get the details of a specific template
gcloud compute instance-templates describe [TEMPLATE NAME]

知道哪些磁盘正在使用新镜像可能会很有趣,但这些模板通常不会包含敏感信息。

Snapshots

Snapshots 是磁盘的备份。请注意,这与克隆磁盘(另一种可用功能)不同。 Snapshot 将使用其来源磁盘的相同加密

Enumeration

gcloud compute snapshots list
gcloud compute snapshots describe <snapshot>
gcloud compute snapshots get-iam-policy <snapshot>

权限提升

检查 Compute Instances 权限提升部分。

参考资料

支持 HackTricks

Last updated