GCP - Add Custom SSH Metadata
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
对实例的元数据修改可能导致 如果攻击者获得必要权限,将会带来重大安全风险。
在 GCP 上,Linux 系统 通常会从 Google Compute Engine 的 Python Linux 客户环境 执行脚本。其关键组件是 accounts daemon,旨在 定期检查 实例元数据端点以获取 授权 SSH 公钥的更新。
因此,如果攻击者能够修改自定义元数据,他可以使守护进程找到一个新的公钥,该公钥将被处理并 集成到本地系统中。该密钥将被添加到 现有用户的 ~/.ssh/authorized_keys
文件中,或者根据密钥的格式可能创建一个具有 sudo
权限的新用户。攻击者将能够攻陷主机。
检查实例上的现有 SSH 密钥:
执行命令以描述实例及其元数据,以定位现有的 SSH 密钥。输出中的相关部分将在 metadata
下,具体是 ssh-keys
键。
注意 SSH 密钥的格式:用户名在密钥之前,用冒号分隔。
为 SSH 密钥元数据准备文本文件:
将用户名及其对应的 SSH 密钥的详细信息保存到名为 meta.txt
的文本文件中。这对于保留现有密钥并添加新密钥至关重要。
为目标用户(本示例中的 alice
)生成新的 SSH 密钥:
使用 ssh-keygen
命令生成新的 SSH 密钥,确保注释字段(-C
)与目标用户名匹配。
将新的公钥添加到 meta.txt
中,模仿实例元数据中的格式。
更新实例的 SSH 密钥元数据:
使用 gcloud compute instances add-metadata
命令将更新的 SSH 密钥元数据应用于实例。
使用新的 SSH 密钥访问实例:
使用新的密钥通过 SSH 连接到实例,以目标用户(本示例中的 alice
)的身份访问 shell。
如果没有找到有趣的用户,可以创建一个新用户并赋予其 sudo
权限:
通过 在项目级别应用 SSH 密钥,可以扩大对云环境中多个虚拟机 (VM) 的 SSH 访问范围。这种方法允许对项目内任何未明确阻止项目范围 SSH 密钥的实例进行 SSH 访问。以下是简要指南:
在项目级别应用 SSH 密钥:
使用 gcloud compute project-info add-metadata
命令将 meta.txt
中的 SSH 密钥添加到项目的元数据中。此操作确保 SSH 密钥在项目中的所有 VM 中被识别,除非某个 VM 启用了“阻止项目范围 SSH 密钥”选项。
使用项目范围密钥 SSH 进入实例:
在项目范围内有 SSH 密钥的情况下,您可以 SSH 进入项目内的任何实例。未阻止项目范围密钥的实例将接受 SSH 密钥,从而授予访问权限。
SSH 进入实例的直接方法是使用 gcloud compute ssh [INSTANCE]
命令。此命令使用您当前的用户名和在项目级别设置的 SSH 密钥尝试访问。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术: HackTricks 培训 GCP 红队专家 (GRTE)