GCP Pentesting

Support HackTricks

Basic Information

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

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

GCP - Basic Information

Labs to learn

GCP Pentester/Red Team Methodology

Щоб провести аудит середовища 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

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

Basic Enumeration

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

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

Перерахунок Сервісів

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

GCP - Services

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

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

GCP - Unauthenticated Enum & Access

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

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

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

GCP - Privilege EscalationGCP - Post ExploitationGCP - Persistence

Публічно Відкриті Сервіси

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

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

GCP <--> Workspace Півотування

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

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

  • 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

Capture gcloud, gsutil... network

Пам'ятайте, що ви можете використовувати параметр --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

Посилання

Підтримати HackTricks

Last updated