GCP - BigQuery Privesc
BigQuery
Więcej informacji o BigQuery znajdziesz tutaj:
GCP - Bigquery EnumOdczyt Tabeli
Czytając informacje przechowywane w tabeli BigQuery, można znaleźć wrażliwe informacje. Aby uzyskać dostęp do tych informacji, potrzebne są uprawnienia bigquery.tables.get
, bigquery.jobs.create
i bigquery.tables.getData
:
Eksport danych
To kolejny sposób na dostęp do danych. Eksportuj je do cloud storage bucket i pobierz pliki z informacjami.
Aby wykonać tę akcję, potrzebne są następujące uprawnienia: bigquery.tables.export
, bigquery.jobs.create
i storage.objects.create
.
Insert data
Możliwe jest wprowadzenie pewnych zaufanych danych do tabeli Bigquery, aby wykorzystać podatność w innym miejscu. Można to łatwo zrobić za pomocą uprawnień bigquery.tables.get
, bigquery.tables.updateData
i bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
Atakujący może nadużyć tego uprawnienia, aby przyznać sobie dodatkowe uprawnienia do zestawu danych BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Samo to uprawnienie pozwala na aktualizację dostępu do zestawu danych BigQuery poprzez modyfikację ACLs, które wskazują, kto może uzyskać do niego dostęp:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Atakujący mógłby nadużyć tego uprawnienia, aby przyznać sobie dalsze uprawnienia do tabeli BigQuery:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
Według dokumentacji, z wymienionymi uprawnieniami możliwe jest zaktualizowanie polityki wiersza.
Jednakże, używając cli bq
potrzebujesz jeszcze: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Możliwe jest znalezienie ID filtra w wynikach enumeracji polityk wierszy. Przykład:
Jeśli masz bigquery.rowAccessPolicies.delete
zamiast bigquery.rowAccessPolicies.update
, możesz również po prostu usunąć politykę:
Inną potencjalną opcją obejścia polityk dostępu do wierszy byłoby po prostu zmienienie wartości ograniczonych danych. Jeśli możesz zobaczyć tylko wtedy, gdy term
to Cfba
, po prostu zmodyfikuj wszystkie rekordy tabeli, aby miały term = "Cfba"
. Jednak bigquery temu zapobiega.
Last updated