# GCP - Pub/Sub Enum

{{#include ../../../banners/hacktricks-training.md}}

## Pub/Sub <a href="#reviewing-cloud-pubsub" id="reviewing-cloud-pubsub"></a>

[Google **Cloud Pub/Sub**](https://cloud.google.com/pubsub/) se opisuje kao usluga koja olakšava razmenu poruka između nezavisnih aplikacija. Osnovni sastavni delovi uključuju **teme**, na koje se aplikacije mogu **pretplatiti**. Aplikacije koje su se pretplatile imaju mogućnost da **šalju i primaju poruke**. Svaka poruka se sastoji od stvarnog sadržaja zajedno sa povezanim metapodacima.

**Tema je red** u koji će poruke biti poslate, dok su **pretplate** **objekti** koje će korisnici koristiti za **pristup porukama u temama**. Može postojati više od **1 pretplate po temi** i postoje 4 tipa pretplata:

- **Pull**: Korisnik(ci) ove pretplate treba da povuku poruke.
- **Push**: URL krajnja tačka je naznačena i poruke će biti odmah poslate na nju.
- **Big query table**: Kao push, ali postavlja poruke unutar Big query tabele.
- **Cloud Storage**: Isporučuje poruke direktno u postojeći bucket.

Po **defaultu**, **pretplata ističe nakon 31 dan**, iako se može postaviti da nikada ne istekne.

Po **defaultu**, poruka se **čuva 7 dana**, ali se ovo vreme može **povećati do 31 dan**. Takođe, ako nije **ACKovana u 10s**, vraća se u red. Takođe se može postaviti da ACKovane poruke treba da se nastave čuvati.

Tema je po defaultu enkriptovana koristeći **Google upravljani enkripcioni ključ**. Ali se takođe može odabrati **CMEK** (Ključ enkripcije koji upravlja korisnik) iz KMS-a.

**Dead letter**: Pretplate mogu konfigurisati **maksimalan broj pokušaja isporuke**. Kada poruka ne može biti isporučena, ona se **ponovo objavljuje na određenu dead letter temu**.

### Snapshots & Schemas

Snapshot je funkcija koja **hvata stanje pretplate u određenom trenutku**. To je suštinski dosledna **rezerva neacknowledged poruka u pretplati**. Kreiranjem snapshot-a, čuvate stanje potvrde poruka pretplate, omogućavajući vam da nastavite sa konzumacijom poruka od tačke na kojoj je snapshot napravljen, čak i nakon što bi originalne poruke inače bile obrisane.\
Ako imate sreće, snapshot bi mogao sadržati **stare osetljive informacije** iz vremena kada je snapshot napravljen.

Kada kreirate temu, možete naznačiti da **poruke teme moraju pratiti šemu**.

### Enumeration
```bash
# Get a list of topics in the project
gcloud pubsub topics list
gcloud pubsub topics describe <topic>
gcloud pubsub topics list-subscriptions <topic>
gcloud pubsub topics get-iam-policy <topic>

# Get a list of subscriptions across all topics
gcloud pubsub subscriptions list
gcloud pubsub subscriptions describe <subscription>
gcloud pubsub subscriptions get-iam-policy <subscription>

# Get list of schemas
gcloud pubsub schemas list
gcloud pubsub schemas describe <schema>
gcloud pubsub schemas list-revisions <schema>

# Get list of snapshots
gcloud pubsub snapshots list
gcloud pubsub snapshots describe <snapshot>
```
Međutim, možete imati bolje rezultate [**tražeći veći skup podataka**](https://cloud.google.com/pubsub/docs/replay-overview), uključujući starije poruke. Ovo ima neke preduslove i može uticati na aplikacije, pa se uverite da zaista znate šta radite.

### Eskalacija privilegija i post eksploatacija

{{#ref}}
../gcp-post-exploitation/gcp-pub-sub-post-exploitation.md
{{#endref}}

## Pub/Sub Lite

[**Pub/Sub Lite**](https://cloud.google.com/pubsub/docs/choosing-pubsub-or-lite) je servis za razmenu poruka sa **zonalnim skladištem**. Pub/Sub Lite **košta deo** od Pub/Sub i namenjen je za **streaming velike zapremine** (do 10 miliona poruka u sekundi) i sisteme zasnovane na događajima gde je niska cena primarna briga.

U PubSub Lite **ima** **tema** i **pretplata**, nema **snapshot-a** i **shema** i postoje:

- **Rezervacije**: Pub/Sub Lite Rezervacije je funkcija koja omogućava korisnicima da rezervišu kapacitet u određenoj regiji za svoje tokove poruka.
- **Operacije**: Odnosi se na akcije i zadatke uključene u upravljanje i administraciju Pub/Sub Lite.

### Enumeracija
```bash
# lite-topics
gcloud pubsub lite-topics list
gcloud pubsub lite-topics describe <topic>
gcloud pubsub lite-topics list-subscriptions <topic>

# lite-subscriptions
gcloud pubsub lite-subscriptions list
gcloud pubsub lite-subscriptions describe <subscription>

# lite-reservations
gcloud pubsub lite-reservations list
gcloud pubsub lite-reservations describe <topic>
gcloud pubsub lite-reservations list-topics <topic>

# lite-operations
gcloud pubsub lite-operations list
gcloud pubsub lite-operations describe <topic>
```
{{#include ../../../banners/hacktricks-training.md}}
