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)
Pour plus d'informations sur BigQuery, consultez :
GCP - Bigquery EnumEn lisant les informations stockées dans une table BigQuery, il peut être possible de trouver des informations sensibles. Pour accéder aux informations, les autorisations nécessaires sont bigquery.tables.get
, bigquery.jobs.create
et bigquery.tables.getData
:
C'est une autre façon d'accéder aux données. Exportez-les vers un bucket de stockage cloud et téléchargez les fichiers contenant les informations.
Pour effectuer cette action, les autorisations suivantes sont nécessaires : bigquery.tables.export
, bigquery.jobs.create
et storage.objects.create
.
Il pourrait être possible d'introduire certaines données de confiance dans une table Bigquery pour abuser d'une vulnérabilité à un autre endroit. Cela peut être facilement fait avec les permissions bigquery.tables.get
, bigquery.tables.updateData
et bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
Un attaquant pourrait abuser de ce privilège pour s'octroyer des permissions supplémentaires sur un ensemble de données BigQuery :
bigquery.datasets.update
, (bigquery.datasets.get
)Juste cette permission permet de mettre à jour votre accès à un ensemble de données BigQuery en modifiant les ACL qui indiquent qui peut y accéder :
bigquery.tables.setIamPolicy
Un attaquant pourrait abuser de ce privilège pour s'accorder des permissions supplémentaires sur une table BigQuery :
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
Selon la documentation, avec les autorisations mentionnées, il est possible de mettre à jour une politique de ligne.
Cependant, en utilisant le cli bq
, vous avez besoin de quelques autres : bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Il est possible de trouver l'ID de filtre dans la sortie de l'énumération des politiques de ligne. Exemple :
Si vous avez bigquery.rowAccessPolicies.delete
au lieu de bigquery.rowAccessPolicies.update
, vous pouvez également simplement supprimer la politique :
Une autre option potentielle pour contourner les politiques d'accès aux lignes serait de simplement changer la valeur des données restreintes. Si vous ne pouvez voir que lorsque term
est Cfba
, modifiez simplement tous les enregistrements de la table pour avoir term = "Cfba"
. Cependant, cela est empêché par bigquery.
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE) Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)