GCP Pentesting

Підтримайте HackTricks

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

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

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

GCP - Basic Information

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

Методологія GCP Pentester/Red Team

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

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

  • Leaks у github (або подібних) - OSINT

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

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

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

  • Server Side Request Forgery з доступом до метаданих

  • Локальне читання файлів

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

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

  • Зламані сторонні сервіси

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

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

GCP - Unauthenticated Enum & Access

Або якщо ви проводите рев'ю, ви можете просто попросити облікові дані з цими ролями:

GCP - Permissions for a Pentest

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

Базове перерахування

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

Перерахування Org

# 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

Principals & IAM Enumeration

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

Якщо у вас недостатньо дозволів для перерахування IAM, ви можете вкрасти або брутфорсити їх, щоб з'ясувати. Перевірте як робити нумерацію та брутфорсинг у:

GCP - IAM, Principals & Org Policies Enum

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

Services Enumeration

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

GCP - Services

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

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

GCP - Unauthenticated Enum & Access

Privilege Escalation, Post Exploitation & Persistence

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

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

GCP - Privilege EscalationGCP - Post ExploitationGCP - Persistence

Publicly Exposed Services

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

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

GCP <--> Workspace Pivoting

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

GCP <--> Workspace Pivoting

Automatic Tools

# 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 token configure in gcloud

Для того, щоб використовувати ексфільтрований OAuth токен сервісного облікового запису з метаданих endpoint, ви можете просто зробити:

# 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