GCP - BigQuery Privesc
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Para mais informações sobre BigQuery, confira:
Ler as informações armazenadas dentro de uma tabela BigQuery pode ser possível encontrar informações sensíveis. Para acessar as informações, as permissões necessárias são bigquery.tables.get
, bigquery.jobs.create
e bigquery.tables.getData
:
Esta é outra maneira de acessar os dados. Exporte para um bucket de armazenamento em nuvem e baixe os arquivos com as informações.
Para realizar esta ação, as seguintes permissões são necessárias: bigquery.tables.export
, bigquery.jobs.create
e storage.objects.create
.
Pode ser possível introduzir certos dados confiáveis em uma tabela Bigquery para abusar de uma vulnerabilidade em algum outro lugar. Isso pode ser facilmente feito com as permissões bigquery.tables.get
, bigquery.tables.updateData
e bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
Um atacante poderia abusar desse privilégio para dar a si mesmo permissões adicionais sobre um conjunto de dados do BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)Apenas esta permissão permite atualizar seu acesso a um conjunto de dados do BigQuery modificando os ACLs que indicam quem pode acessá-lo:
bigquery.tables.setIamPolicy
Um atacante poderia abusar desse privilégio para dar a si mesmo mais permissões sobre uma tabela do BigQuery:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
De acordo com a documentação, com as permissões mencionadas é possível atualizar uma política de linha.
No entanto, usando o cli bq
você precisa de mais algumas: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
É possível encontrar o ID do filtro na saída da enumeração de políticas de linha. Exemplo:
Se você tiver bigquery.rowAccessPolicies.delete
em vez de bigquery.rowAccessPolicies.update
, você também pode simplesmente excluir a política:
Outra opção potencial para contornar as políticas de acesso a linhas seria apenas mudar o valor dos dados restritos. Se você só pode ver quando term
é Cfba
, basta modificar todos os registros da tabela para ter term = "Cfba"
. No entanto, isso é impedido pelo bigquery.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)