GCPBucketBrute
Uno script per enumerare i bucket di Google Storage, determinare quale accesso hai ad essi e stabilire se possono essere soggetti a escalation dei privilegi.
- Questo script (opzionalmente) accetta credenziali di account utente/di servizio GCP e una parola chiave.
- Successivamente, verrà generata una lista di permutazioni a partire da quella parola chiave, che verrà poi utilizzata per scansionare l'esistenza di bucket di Google Storage con quei nomi.
- Se vengono fornite credenziali, la maggior parte dell'enumerazione verrà comunque eseguita in modalità non autenticata, ma per ogni bucket scoperto tramite enumerazione non autenticata, proverà ad enumerare i permessi del bucket utilizzando l'API TestIamPermissions con le credenziali fornite. Questo aiuterà a trovare bucket accessibili quando si è autenticati, ma non quando non si è autenticati.
- Indipendentemente dal fatto che vengano fornite o meno credenziali, lo script proverà quindi ad enumerare i permessi del bucket utilizzando l'API TestIamPermissions in modalità non autenticata. Ciò significa che se non inserisci credenziali, ti verranno mostrati solo i privilegi che ha un utente non autenticato, ma se inserisci credenziali, vedrai quale accesso hanno gli utenti autenticati rispetto a quelli non autenticati.
- ATTENZIONE: Se vengono fornite credenziali, il tuo nome utente potrebbe essere divulgato nei log di accesso di qualsiasi bucket scoperto.
Riepilogo TL;DR
- Data una parola chiave, questo script enumera i bucket di Google Storage basandosi su un certo numero di permutazioni generate dalla parola chiave.
- Quindi, verranno mostrati tutti i bucket scoperti.
- Successivamente, verranno mostrati tutti i permessi che ti sono stati concessi (se presenti) su qualsiasi bucket scoperto.
- Poi lo script controllerà questi privilegi per l'escalation dei privilegi (storage.buckets.setIamPolicy) e mostrerà qualsiasi cosa interessante (come elencabile pubblicamente, scrivibile pubblicamente, elencabile con autenticazione, escalation dei privilegi, ecc.).
Requisiti
- Linux/OS X
- Windows funziona solo per scansioni non autenticate. C'è un problema con il modo in cui lo script utilizza il modulo subprocess che fallisce quando si utilizza un client Google autenticato.
- Python3
- Pip3
Installazione
git clone https://github.com/RhinoSecurityLabs/GCPBucketBrute.git
cd GCPBucketBrute/
pip3 install -r requirements.txt o python3 -m pip install -r requirements.txt
Utilizzo
Per prima cosa, determina il tipo di autenticazione che vuoi utilizzare per l'enumerazione tra un account utente, un account di servizio o non autenticato. Se stai utilizzando un account di servizio, fornisci il percorso del file della chiave privata tramite l'argomento -f/--service-account-credential-file-path. Se stai utilizzando un account utente, non fornire un argomento di autenticazione. Ti verrà quindi chiesto di inserire il token di accesso del tuo account utente per accedere alle API GCP. Se vuoi eseguire una scansione completamente non autenticata, passa l'argomento -u/--unauthenticated per nascondere i prompt di autenticazione.
- Scansiona i bucket usando la parola chiave "test" completamente non autenticato:
python3 gcpbucketbrute.py -k test -u
- Scansiona i bucket usando la parola chiave "test" autenticandoti con un account di servizio (chiave privata salvata in ../sa-priv-key.pem), scrivendo i risultati in out.txt nella directory corrente:
python3 gcpbucketbrute.py -k test -f ../sa-priv-key.pem -o ./out.txt
- Scansiona i bucket usando la parola chiave "test", utilizzando un token di accesso di un account utente, eseguendo con 10 sottoprocessi invece di 5:
python3 gcpbucketbrute.py -k test -s 10
Argomenti disponibili
-k/--keyword
- Questo argomento viene utilizzato per specificare quale parola chiave verrà utilizzata per generare le permutazioni. Tali permutazioni sono ciò che verrà cercato in Google Storage.
--check
- Questo argomento è mutuamente esclusivo con
-k/--keyword e accetta una singola stringa. Ti permette di controllare i tuoi permessi su un bucket specifico, invece di generare una lista di permutazioni basate su una parola chiave. Può essere ripetuto per controllare più bucket. Crediti: @BBerastegui
--check-list
- Questo argomento è mutuamente esclusivo con
-k/--keyword e --check. Ti permette di controllare i permessi di una lista di bucket in un file. Devono essere elencati uno per riga in un file di testo. Per leggere dall'input standard, passa - come nome del file.
-s/