GCP - BigQuery Privesc
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)
Para más información sobre BigQuery, consulta:
Leer la información almacenada dentro de una tabla de BigQuery puede ser posible encontrar información sensible. Para acceder a la información, los permisos necesarios son bigquery.tables.get
, bigquery.jobs.create
y bigquery.tables.getData
:
Esta es otra forma de acceder a los datos. Exportarlo a un bucket de almacenamiento en la nube y descargar los archivos con la información.
Para realizar esta acción se necesitan los siguientes permisos: bigquery.tables.export
, bigquery.jobs.create
y storage.objects.create
.
Puede ser posible introducir ciertos datos de confianza en una tabla de Bigquery para abusar de una vulnerabilidad en algún otro lugar. Esto se puede hacer fácilmente con los permisos bigquery.tables.get
, bigquery.tables.updateData
y bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
Un atacante podría abusar de este privilegio para otorgarse más permisos sobre un conjunto de datos de BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)Solo este permiso permite actualizar su acceso a un conjunto de datos de BigQuery modificando las ACL que indican quién puede acceder a él:
bigquery.tables.setIamPolicy
Un atacante podría abusar de este privilegio para otorgarse más permisos sobre una tabla de BigQuery:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
Según la documentación, con los permisos mencionados es posible actualizar una política de fila.
Sin embargo, usando la cli bq
necesitas algunos más: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Es posible encontrar el ID del filtro en la salida de la enumeración de políticas de fila. Ejemplo:
Si tienes bigquery.rowAccessPolicies.delete
en lugar de bigquery.rowAccessPolicies.update
, también podrías simplemente eliminar la política:
Otra opción potencial para eludir las políticas de acceso a filas sería simplemente cambiar el valor de los datos restringidos. Si solo puedes ver cuando term
es Cfba
, simplemente modifica todos los registros de la tabla para que tengan term = "Cfba"
. Sin embargo, esto está prevenido por bigquery.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)