GCP Pentesting
Reading time: 9 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Основна інформація
Перед початком пентестингу середовища GCP, є кілька основних речей, які вам потрібно знати про те, як це працює, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати.
Концепції, такі як ієрархія організації, дозволи та інші основні концепції пояснені в:
Лабораторії для навчання
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
Методологія GCP Pentester/Red Team
Для аудиту середовища GCP дуже важливо знати: які послуги використовуються, що експонується, хто має доступ до чого, і як внутрішні GCP послуги та зовнішні послуги з'єднані.
З точки зору Red Team, перший крок до компрометації середовища GCP - це отримати деякі облікові дані. Ось кілька ідей, як це зробити:
- Витоки в github (або подібних) - OSINT
- Соціальна інженерія (перевірте сторінку Workspace Security)
- Повторне використання паролів (витоки паролів)
- Вразливості в GCP-розміщених додатках
- Server Side Request Forgery з доступом до метаданих
- Читання локальних файлів
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
- 3-ті сторони зламані
- Внутрішній співробітник
Або шляхом компрометації неавтентифікованої служби, що експонується:
GCP - Unauthenticated Enum & Access
Або, якщо ви проводите огляд, ви можете просто попросити облікові дані з цими ролями:
GCP - Permissions for a Pentest
note
Після того, як ви змогли отримати облікові дані, вам потрібно знати, кому належать ці облікові дані, і до чого вони мають доступ, тому вам потрібно виконати деяку базову енумерацію:
Базова енумерація
SSRF
Для отримання додаткової інформації про те, як перерахувати метадані GCP, перевірте наступну сторінку hacktricks:
Whoami
В GCP ви можете спробувати кілька варіантів, щоб спробувати вгадати, хто ви:
#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token
#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo
Ви також можете використовувати API-інтерфейс /userinfo
, щоб отримати більше інформації про користувача:
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo
Перерахунок організацій
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects
Принципи та IAM Перерахунок
Якщо у вас достатньо прав, перевірка привілеїв кожної сутності в обліковому записі GCP допоможе вам зрозуміти, що ви та інші ідентичності можете робити і як підвищити привілеї.
Якщо у вас недостатньо прав для перерахунку IAM, ви можете викрасти їх за допомогою брутфорсу, щоб з'ясувати.
Перевірте як виконати перерахунок і брутфорс в:
GCP - IAM, Principals & Org Policies Enum
note
Тепер, коли ви маєте деяку інформацію про свої облікові дані (і якщо ви червона команда, сподіваюсь, ви не були виявлені). Час з'ясувати, які сервіси використовуються в середовищі.
У наступному розділі ви можете перевірити деякі способи перерахунку деяких загальних сервісів.
Перерахунок Сервісів
GCP має вражаючу кількість сервісів, на наступній сторінці ви знайдете базову інформацію, перерахунок шпаргалок, як уникнути виявлення, отримати постійність та інші трюки після експлуатації про деякі з них:
Зверніть увагу, що вам не потрібно виконувати всю роботу вручну, нижче в цьому пості ви можете знайти розділ про автоматичні інструменти.
Більше того, на цьому етапі ви могли виявити більше сервісів, доступних для неавтентифікованих користувачів, ви можете мати можливість їх експлуатувати:
GCP - Unauthenticated Enum & Access
Підвищення Привілеїв, Після Експлуатації та Постійність
Найбільш поширений спосіб, коли ви отримали деякі облікові дані хмари або скомпрометували деякий сервіс, що працює в хмарі, - це зловживати неправильно налаштованими привілеями, які може мати скомпрометований обліковий запис. Тож перше, що вам слід зробити, - це перерахувати свої привілеї.
Більше того, під час цього перерахунку пам'ятайте, що дозволи можуть бути встановлені на найвищому рівні "Організації" також.
Публічно Відкриті Сервіси
Під час перерахунку сервісів GCP ви могли знайти деякі з них, які відкривають елементи в Інтернет (порти VM/Контейнерів, бази даних або сервіси черг, знімки або бакети...).
Як пентестер/червона команда, ви завжди повинні перевіряти, чи можете ви знайти чутливу інформацію / вразливості на них, оскільки вони можуть надати вам додатковий доступ до облікового запису AWS.
У цій книзі ви повинні знайти інформацію про те, як знайти відкриті сервіси GCP і як їх перевірити. Щодо того, як знайти вразливості у відкритих мережевих сервісах, я б рекомендував вам шукати конкретний сервіс в:
GCP <--> Workspace Півотування
Скомпрометування принципів в одній платформі може дозволити зловмиснику скомпрометувати іншу, перевірте це в:
Автоматичні Інструменти
- У консолі GCloud, на https://console.cloud.google.com/iam-admin/asset-inventory/dashboard ви можете бачити ресурси та IAM, що використовуються проектом.
- Тут ви можете побачити активи, підтримувані цим API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
- Перевірте інструменти, які можна використовувати в кількох хмарах тут.
- gcp_scanner: Це сканер ресурсів GCP, який може допомогти визначити, який рівень доступу мають певні облікові дані на GCP.
# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
- gcp_enum: Bash-скрипт для перерахунку середовища GCP за допомогою gcloud cli та збереження результатів у файл.
- GCP-IAM-Privilege-Escalation: Скрипти для перерахунку високих IAM привілеїв та для ескалації привілеїв у GCP, зловживаючи ними (я не зміг запустити скрипт для перерахунку).
- BF My GCP Permissions: Скрипт для брутфорсу ваших привілеїв.
gcloud config & debug
# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token
# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
Захоплення мережі gcloud, gsutil...
Пам'ятайте, що ви можете використовувати параметр --log-http
з gcloud
cli, щоб друкувати запити, які виконує інструмент. Якщо ви не хочете, щоб журнали редагували значення токена, використовуйте gcloud config set log_http_redact_token false
Крім того, для перехоплення зв'язку:
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True
# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem
# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file
Налаштування токена OAuth у gcloud
Щоб використати ексфільтрований токен OAuth облікового запису служби з кінцевої точки метаданих, ви можете просто зробити:
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list
# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.