Translated ['src/pentesting-ci-cd/ansible-tower-awx-automation-controlle

This commit is contained in:
Translator
2025-08-01 10:14:59 +00:00
parent f2d09a8223
commit d6abd8a536
47 changed files with 506 additions and 324 deletions

View File

@@ -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}}

View File

@@ -1 +1,3 @@
# GCP - Постійність
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1 +1,3 @@
# GCP - Постексплуатація
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -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}}

View File

@@ -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 ключі, встановлені на рівні проєкту, для спроби доступу.
## Посилання

View File

@@ -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}}

View File

@@ -1 +1,3 @@
# GCP - Сервіси
{{#include ../../../banners/hacktricks-training.md}}