Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs σταHackTricks και HackTricks Cloud αποθετήρια του github.
BigQuery
Για περισσότερες πληροφορίες σχετικά με το BigQuery, ελέγξτε:
Ανάγνωση Πίνακα
Διαβάζοντας τις πληροφορίες που αποθηκεύονται μέσα σε έναν πίνακα BigQuery, είναι πιθανό να βρεθούν ευαίσθητες πληροφορίες. Για να έχετε πρόσβαση στις πληροφορίες, απαιτούνται οι άδειες bigquery.tables.get, bigquery.jobs.create και bigquery.tables.getData:
bqhead<dataset>.<table>bqquery--nouse_legacy_sql'SELECT * FROM `<proj>.<dataset>.<table-name>` LIMIT 1000'
Εξαγωγή δεδομένων
Αυτός είναι ένας άλλος τρόπος για να έχετε πρόσβαση στα δεδομένα. Εξαγάγετε τα σε έναν κάδο αποθήκευσης στο cloud και στη συνέχεια κατεβάστε τα αρχεία με τις πληροφορίες.
Για να εκτελέσετε αυτήν την ενέργεια απαιτούνται οι εξής άδειες: bigquery.tables.export, bigquery.jobs.create και storage.objects.create.
Είναι πιθανό να εισαχθούν συγκεκριμένα αξιόπιστα δεδομένα σε έναν πίνακα Bigquery για να εκμεταλλευτείτε μια ευπάθεια σε κάποιο άλλο μέρος. Αυτό μπορεί να γίνει εύκολα με τις άδειες bigquery.tables.get, bigquery.tables.updateData και bigquery.jobs.create:
Ένας επιτιθέμενος μπορεί να καταχραστεί αυτό το προνόμιο για να δώσει στον εαυτό του περαιτέρω δικαιώματα σε ένα σύνολο δεδομένων του BigQuery:
# For this you also need bigquery.tables.getIamPolicybqadd-iam-policy-binding \--member='user:<email>' \--role='roles/bigquery.admin' \<proj>:<dataset># use the set-iam-policy if you don't have bigquery.tables.getIamPolicy
bigquery.datasets.update, (bigquery.datasets.get)
Αυτή η άδεια επιτρέπει μόνο την ενημέρωση της πρόσβασής σας σε ένα σύνολο δεδομένων BigQuery με τροποποίηση των ACLs που υποδεικνύουν ποιος μπορεί να έχει πρόσβαση σε αυτό:
# Download current permissions, reqires bigquery.datasets.getbqshow--format=prettyjson<proj>:<dataset>>acl.json## Give permissions to the desired userbqupdate--sourceacl.json<proj>:<dataset>
bigquery.tables.setIamPolicy
Ένας επιτιθέμενος μπορεί να καταχραστεί αυτό το προνόμιο για να δώσει στον εαυτό του περαιτέρω δικαιώματα σε έναν πίνακα BigQuery:
# For this you also need bigquery.tables.setIamPolicybqadd-iam-policy-binding \--member='user:<email>' \--role='roles/bigquery.admin' \<proj>:<dataset>.<table># use the set-iam-policy if you don't have bigquery.tables.setIamPolicy
Σύμφωνα με τα έγγραφα, με τις ανωτέρω άδειες είναι δυνατόν να ενημερωθεί μια πολιτική γραμμής.
Ωστόσο, χρησιμοποιώντας το εργαλείο γραμμής εντολών bq χρειάζεστε κάτι παραπάνω: bigquery.rowAccessPolicies.create, bigquery.tables.get.
bq query --nouse_legacy_sql 'CREATE OR REPLACE ROW ACCESS POLICY <filter_id> ON `<proj>.<dataset-name>.<table-name>` GRANT TO ("user:user@email.xyz") FILTER USING (term = "Cfba");' # A example filter was used
Είναι δυνατόν να βρεθεί το ID του φίλτρου στην έξοδο της απαρίθμησης των πολιτικών γραμμής. Παράδειγμα: