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密钥,可以扩大SSH访问到云环境中的多个虚拟机(VM)。这种方法允许对项目中未明确阻止项目范围内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密钥尝试访问。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)