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)
Για περισσότερες πληροφορίες σχετικά με το BigQuery, ελέγξτε:
GCP - Bigquery EnumΔιαβάζοντας τις πληροφορίες που είναι αποθηκευμένες μέσα σε έναν πίνακα BigQuery, μπορεί να είναι δυνατό να βρείτε ευαίσθητες πληροφορίες. Για να αποκτήσετε πρόσβαση στις πληροφορίες, οι άδειες που απαιτούνται είναι bigquery.tables.get
, bigquery.jobs.create
και bigquery.tables.getData
:
Αυτή είναι μια άλλη μέθοδος για να αποκτήσετε πρόσβαση στα δεδομένα. Εξάγετε το σε ένα cloud storage bucket και κατεβάστε τα αρχεία με τις πληροφορίες.
Για να εκτελέσετε αυτήν την ενέργεια απαιτούνται οι εξής άδειες: bigquery.tables.export
, bigquery.jobs.create
και storage.objects.create
.
Μπορεί να είναι δυνατό να εισαγάγετε ορισμένα αξιόπιστα δεδομένα σε έναν πίνακα Bigquery για να εκμεταλλευτείτε μια ευπάθεια σε κάποιο άλλο σημείο. Αυτό μπορεί να γίνει εύκολα με τα δικαιώματα bigquery.tables.get
, bigquery.tables.updateData
και bigquery.jobs.create
:
bigquery.datasets.setIamPolicy
Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτό το προνόμιο για να δώσει στον εαυτό του επιπλέον δικαιώματα πάνω σε ένα σύνολο δεδομένων BigQuery:
bigquery.datasets.update
, (bigquery.datasets.get
)Αυτή η άδεια επιτρέπει να ενημερώσετε την πρόσβασή σας σε ένα BigQuery dataset τροποποιώντας τα ACLs που υποδεικνύουν ποιος μπορεί να έχει πρόσβαση σε αυτό:
bigquery.tables.setIamPolicy
Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτό το προνόμιο για να δώσει στον εαυτό του επιπλέον δικαιώματα πάνω σε έναν πίνακα BigQuery:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
Σύμφωνα με την τεκμηρίωση, με τις αναφερόμενες άδειες είναι δυνατή η ενημέρωση μιας πολιτικής γραμμής.
Ωστόσο, χρησιμοποιώντας το cli bq
χρειάζεστε μερικά ακόμη: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
Είναι δυνατόν να βρείτε το ID φίλτρου στην έξοδο της καταμέτρησης πολιτικών γραμμής. Παράδειγμα:
Αν έχετε bigquery.rowAccessPolicies.delete
αντί για bigquery.rowAccessPolicies.update
, μπορείτε επίσης απλά να διαγράψετε την πολιτική:
Μια άλλη πιθανή επιλογή για να παρακάμψετε τις πολιτικές πρόσβασης γραμμών θα ήταν να αλλάξετε απλώς την τιμή των περιορισμένων δεδομένων. Εάν μπορείτε να δείτε μόνο όταν term
είναι Cfba
, απλώς τροποποιήστε όλα τα αρχεία του πίνακα ώστε να έχουν term = "Cfba"
. Ωστόσο, αυτό αποτρέπεται από το bigquery.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)