GCP - BigQuery Privesc
BigQuery
Per ulteriori informazioni su BigQuery controlla:
GCP - Bigquery EnumRead Table
Leggendo le informazioni memorizzate all'interno di una tabella BigQuery potrebbe essere possibile trovare informazioni sensibili. Per accedere alle informazioni, i permessi necessari sono bigquery.tables.get
, bigquery.jobs.create
e bigquery.tables.getData
:
Esporta dati
Questo è un altro modo per accedere ai dati. Esportalo in un bucket di cloud storage e scarica i file con le informazioni.
Per eseguire questa azione sono necessari i seguenti permessi: bigquery.tables.export
, bigquery.jobs.create
e storage.objects.create
.
Inserire dati
Potrebbe essere possibile introdurre alcuni dati fidati in una tabella Bigquery per sfruttare una vulnerabilità in un altro luogo. Questo può essere facilmente fatto con i permessi bigquery.tables.get
, bigquery.tables.updateData
e bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
Un attaccante potrebbe abusare di questo privilegio per darsi ulteriori permessi su un dataset di BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)Solo questo permesso consente di aggiornare il tuo accesso a un dataset BigQuery modificando le ACL che indicano chi può accedervi:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
Un attaccante potrebbe abusare di questo privilegio per darsi ulteriori permessi su una tabella 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
Secondo la documentazione, con i permessi menzionati è possibile aggiornare una policy di riga.
Tuttavia, utilizzando il cli bq
hai bisogno di qualcos'altro: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
È possibile trovare l'ID del filtro nell'output dell'enumerazione delle politiche di riga. Esempio:
Se hai bigquery.rowAccessPolicies.delete
invece di bigquery.rowAccessPolicies.update
, puoi anche semplicemente eliminare la policy:
Un'altra opzione potenziale per bypassare le politiche di accesso alle righe sarebbe semplicemente cambiare il valore dei dati riservati. Se puoi vedere solo quando term
è Cfba
, modifica semplicemente tutti i record della tabella per avere term = "Cfba"
. Tuttavia, questo è impedito da bigquery.
Last updated