GCP Pentesting
Informazioni di Base
Prima di iniziare il pentesting di un ambiente GCP, ci sono alcune cose di base che devi sapere su come funziona per aiutarti a capire cosa devi fare, come trovare configurazioni errate e come sfruttarle.
Concetti come la gerarchia dell'organizzazione, i permessi e altri concetti di base sono spiegati in:
GCP - Basic InformationLaboratori per imparare
Metodologia GCP Pentester/Red Team
Per eseguire un audit di un ambiente GCP è molto importante sapere: quali servizi vengono utilizzati, cosa è esposto, chi ha accesso a cosa e come sono collegati i servizi interni di GCP e i servizi esterni.
Dal punto di vista del Red Team, il primo passo per compromettere un ambiente GCP è riuscire a ottenere alcune credenziali. Ecco alcune idee su come farlo:
Leaks su github (o simili) - OSINT
Ingegneria Sociale (Controlla la pagina Workspace Security)
Riutilizzo delle password (password leaks)
Vulnerabilità nelle applicazioni ospitate su GCP
Server Side Request Forgery con accesso all'endpoint dei metadati
Lettura di File Locali
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3rd parties compromessi
Dipendente Interno
Oppure compromettendo un servizio non autenticato esposto:
GCP - Unauthenticated Enum & AccessOppure se stai facendo una revisione potresti semplicemente chiedere le credenziali con questi ruoli:
GCP - Permissions for a PentestDopo aver ottenuto le credenziali, devi sapere a chi appartengono quelle credenziali e a cosa hanno accesso, quindi devi eseguire una base di enumerazione:
Enumerazione di Base
SSRF
Per maggiori informazioni su come enumerare i metadati GCP controlla la seguente pagina di hacktricks:
Whoami
In GCP puoi provare diverse opzioni per cercare di indovinare chi sei:
Enumerazione dell'Organizzazione
Principals & IAM Enumeration
Se hai abbastanza permessi, controllare i privilegi di ogni entità all'interno dell'account GCP ti aiuterà a capire cosa puoi fare tu e altre identità e come escalare i privilegi.
Se non hai abbastanza permessi per enumerare IAM, puoi rubare o forzare brutalmente per scoprirli. Controlla come fare la numerazione e il brute-forcing in:
GCP - IAM, Principals & Org Policies EnumOra che hai alcune informazioni sulle tue credenziali (e se sei un red team speriamo che non sei stato rilevato). È il momento di capire quali servizi vengono utilizzati nell'ambiente. Nella sezione seguente puoi controllare alcuni modi per enumerare alcuni servizi comuni.
Services Enumeration
GCP ha una quantità sorprendente di servizi, nella pagina seguente troverai informazioni di base, cheatsheet di enumerazione, come evitare il rilevamento, ottenere persistenza, e altri trucchi di post-exploitation su alcuni di essi:
GCP - ServicesNota che non è necessario eseguire tutto il lavoro manualmente, più avanti in questo post puoi trovare una sezione sui strumenti automatici.
Inoltre, in questa fase potresti aver scoperto più servizi esposti agli utenti non autenticati, potresti essere in grado di sfruttarli:
GCP - Unauthenticated Enum & AccessPrivilege Escalation, Post Exploitation & Persistence
Il modo più comune una volta ottenute alcune credenziali cloud o compromesso un servizio in esecuzione all'interno di un cloud è abusare dei privilegi mal configurati che l'account compromesso potrebbe avere. Quindi, la prima cosa da fare è enumerare i tuoi privilegi.
Inoltre, durante questa enumerazione, ricorda che i permessi possono essere impostati al livello più alto di "Organizzazione".
GCP - Privilege EscalationGCP - Post ExploitationGCP - PersistencePublicly Exposed Services
Durante l'enumerazione dei servizi GCP potresti aver trovato alcuni di essi che espongono elementi a Internet (porte VM/Containers, database o servizi di coda, snapshot o bucket...). Come pentester/red teamer dovresti sempre controllare se puoi trovare informazioni sensibili / vulnerabilità su di essi poiché potrebbero fornirti ulteriore accesso all'account AWS.
In questo libro dovresti trovare informazioni su come trovare servizi GCP esposti e come controllarli. Per trovare vulnerabilità nei servizi di rete esposti ti consiglio di cercare il servizio specifico in:
GCP <--> Workspace Pivoting
Compromettere entità in una piattaforma potrebbe permettere a un attaccante di compromettere l'altra, controllalo in:
GCP <--> Workspace PivotingAutomatic Tools
Nella console GCloud, in https://console.cloud.google.com/iam-admin/asset-inventory/dashboard puoi vedere le risorse e gli IAM utilizzati dal progetto.
Qui puoi vedere le risorse supportate da questa API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
Controlla strumenti che possono essere utilizzati in diversi cloud qui.
gcp_scanner: Questo è uno scanner di risorse GCP che può aiutare a determinare quale livello di accesso possiedono determinate credenziali su GCP.
gcp_enum: Script Bash per enumerare un ambiente GCP utilizzando gcloud cli e salvare i risultati in un file.
GCP-IAM-Privilege-Escalation: Script per enumerare alti privilegi IAM e per scalare privilegi in GCP abusandone (non sono riuscito a far funzionare lo script di enumerazione).
BF My GCP Permissions: Script per forzare i tuoi permessi.
gcloud config & debug
Catturare la rete di gcloud, gsutil...
Ricorda che puoi usare il parametro --log-http
con il gcloud
cli per stampare le richieste che lo strumento sta eseguendo. Se non vuoi che i log redigano il valore del token, usa gcloud config set log_http_redact_token false
Inoltre, per intercettare la comunicazione:
Configurare il token OAuth in gcloud
Per utilizzare un token OAuth dell'account di servizio esfiltrato dal metadata endpoint puoi semplicemente fare:
Riferimenti
Last updated