GCP Pentesting

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація

Перш ніж почати тестування на проникнення середовища GCP, є кілька основних речей, які вам потрібно знати про його роботу, щоб допомогти вам зрозуміти, що вам потрібно робити, як знаходити неправильні конфігурації та як їх експлуатувати.

Концепції, такі як ієрархія організації, дозволи та інші основні концепції пояснені в:

pageGCP - Basic Information

Лабораторії для навчання

Методологія тестування на проникнення GCP/Red Team

Для аудиту середовища GCP дуже важливо знати: які сервіси використовуються, що викладено, хто має доступ до чого і як внутрішні сервіси GCP пов'язані з зовнішніми сервісами.

З точки зору Red Team, першим кроком для компрометації середовища GCP є здобуття даних для входу. Ось деякі ідеї, як це зробити:

  • Витоки в github (або подібні) - OSINT

  • Соціальна інженерія (Перевірте сторінку Безпека Workspace)

  • Повторне використання паролів (витоки паролів)

  • Вразливості в застосунках, розміщених в GCP

  • Підроблення запитів на бік сервера з доступом до кінцевої точки метаданих

  • Читання локальних файлів

  • /home/USERNAME/.config/gcloud/*

  • C:\Users\USERNAME\.config\gcloud\*

  • 3-ті сторони порушені

  • Внутрішні співробітники

Або шляхом компрометації невпізнаної служби, яка викладена:

pageGCP - Unauthenticated Enum & Access

Або якщо ви робите огляд, ви можете просто запитати дані для входу з такими ролями:

pageGCP - Permissions for a Pentest

Після того, як вам вдалося отримати дані для входу, вам потрібно знати, кому належать ці дані для входу, і до чого вони мають доступ, тому вам потрібно виконати деяку базову перелік:

Базова перелік

SSRF

Для отримання додаткової інформації про те, як перелічити метадані GCP, перевірте сторінку hacktricks:

Хто я

У 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

Перелік організацій

# 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, ви можете їх викрасти або перебрати, щоб їх визначити. Перевірте, як виконати перелік та перебор в:

pageGCP - IAM, Principals & Org Policies Enum

Тепер, коли у вас є деяка інформація про ваші облікові дані (і якщо ви - червона команда, сподіваємося, вас не виявили), настав час визначити, які служби використовуються в середовищі. У наступному розділі ви можете перевірити деякі способи переліку деяких загальних служб.

Перелік служб

У GCP є вражаюча кількість служб, на наступній сторінці ви знайдете основну інформацію, шпаргалки з переліку, як уникнути виявлення, отримати постійність та інші післяексплуатаційні трюки щодо деяких з них:

pageGCP - Services

Зверніть увагу, що вам не потрібно виконувати всю роботу вручну, нижче в цьому дописі ви знайдете розділ про автоматичні інструменти.

Більше того, на цьому етапі ви можли виявити, що більше служб відкрито для неавтентифікованих користувачів, ви можете їх використати:

pageGCP - Unauthenticated Enum & Access

Підвищення привілеїв, Післяексплуатація та Постійність

Найпоширеніший спосіб, як тільки ви отримали деякі хмарні облікові дані або скомпрометували деяку службу, що працює в хмарі, це зловживати неправильно налаштованими привілеями, які можуть бути у скомпрометованому обліковому записі. Таким чином, перш за все вам слід перелічити свої привілеї.

Більше того, під час цього переліку пам'ятайте, що дозволи можуть бути встановлені на найвищому рівні "Організація" також.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Публічно відкриті служби

Під час переліку служб GCP ви можли знайти деякі з них, які викладені в Інтернет (порти ВМ/контейнерів, бази даних або служби черг, знімки або кошики...). Як пентестер/червона команда, вам завжди слід перевіряти, чи можете ви знайти чутливу інформацію / вразливості на них, оскільки вони можуть надати вам додатковий доступ до облікового запису AWS.

У цій книзі ви повинні знайти інформацію про те, як знайти відкриті служби GCP та як їх перевірити. Щодо того, як знайти вразливості в відкритих мережевих службах, я б рекомендував вам шукати конкретну службу в:

GCP <--> Workspace Перехід

Компрометація принципалів в одній платформі може дозволити зловмиснику компрометувати іншу, перевірте це в:

pageGCP <--> Workspace Pivoting

Автоматичні Інструменти

# 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, зловживаючи ними (я не зміг запустити сценарій переліку).

Налаштування gcloud та відлагодження

# 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, щоб вивести запити, які виконує інструмент. Якщо ви не хочете, щоб журнали маскували значення токену, використовуйте 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

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated