
Enumeratore di permessi IAM cloud-agnostico
Strumento di enumerazione delle autorizzazioni IAM multi-cloud. Attualmente copre:
Cliam è un semplice identificatore di permessi cloud. Ci sono due componenti principali nella CLI. La maggior parte dei permessi enumerati sono permessi di tipo list, describe o get.
enumerate che può essere usato per enumerare permessi specifici (consigliato)Scarica l'ultima release. I tag DEV sono attuali, ma non stabili.
Per compilare il binario localmente, entra nella directory cli ed esegui make dev
Cliam funziona con credenziali ottenute dalle variabili d'ambiente ben note dei servizi o passando i flag comunemente richiesti dalla CLI.
È fortemente consigliato impostare il completamento dei comandi poiché la maggior parte delle opzioni di enumerate devono essere specifiche. Per generare i completamenti, usa cliam completion [shell] e configuralo secondo la directory di completamento della tua shell.
Usage:
cliam [command]
Available Commands:
aws Enumerate AWS credentials for their permissions.
azure Enumerate Azure credentials for their permissions.
completion Generate the autocompletion script for the specified shell
firebase Enumerate Firebase permissions.
gcp Enumerate GCP service accounts for their permissions.
help Help about any command
version Show version and build info
Flags:
-h, --help help for cliam
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 5)
--save-output Save output to file on success
-v, --verbose Enable verbose output.
Usa l'API REST di AWS per effettuare una richiesta firmata con le credenziali passate. Questo aumenta notevolmente la velocità, ma rende un po' più difficile tenere il passo con l'aggiunta di nuovi permessi. Il problema di scala è che AWS utilizza 3-4 varietà di richieste a livello di servizio.
Supporta l'ottenimento delle credenziali dal profilo AWS, dai flag o dalle variabili d'ambiente predefinite di AWS come AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e opzionalmente AWS_SESSION_TOKEN.
❯❯ cliam aws
Enumerate AWS credentials for their permissions.
Usage:
cliam aws [command]
Available Commands:
enumerate Enumerate permissions for specified AWS resources.
service-group Enumerate permissions for groups of AWS resources.
Flags:
--access-key-id string AWS Access Key ID
-h, --help help for aws
--known-value stringToString AWS Resource Name. When known-resource-name is set, additional permissions where a resource needs to be specified is enumerated. (default [])
--profile string AWS Profile. When profile is set, access-key-id, secret-access-key, and session-token are ignored.
--region string AWS Region (default "us-east-1")
--secret-access-key string AWS Secret Access Key
--session-json string AWS Session JSON file. This flag attempts to read session information from the specified file. Helpful with temporary credentials.
--session-token string AWS Session Token
Global Flags:
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 5)
-v, --verbose Enable verbose output.
Cliam per AWS supporta anche l'enumerazione di alcuni permessi che richiedono un valore conosciuto. Ad esempio, quando si utilizza awscli, possiamo ottenere una funzione usando aws lambda get-function --function-name <function_name>.
Questo corrisponde direttamente a cliam dove possiamo usare:
cliam aws enumerate lamda --known-value function-name=<function_name>
Questo enumererà tutti i permessi per lambda che accettano function-name come argomento valido. Funzionerà anche con altre risorse AWS.
Bruteforce di tutte le risorse serverless da un profilo AWS
❯❯ cliam aws service-group serverless --profile=my-profile
Usa token di sessione temporanei ottenuti per controllare tutti i permessi ec2
❯❯ cliam aws enumerate ec2 --session-json=creds.json
Dove creds.json ha
{
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIA...",
"SecretAccessKey" : "...",
"Token" : "...",
}
Enumerazione dei permessi per s3, iam ed ec2
❯❯ cliam aws enumerate s3 iam ec2
GCP supporta l'enumerazione da un file JSON di un service account specifico. Sono supportate anche le credenziali dalle variabili d'ambiente GCP .GOOGLE_APPLICATION_CREDENTIALS e CLOUDSDK_CORE_PROJECT
Poiché ci sono due modalità per l'enumerazione GCP, usa enumerate se cloudresourcemanager è abilitato o usa rest per enumerare permessi specifici.
cliam gcp --help
Enumerate GCP service accounts for their permissions.
Usage:
cliam gcp [command]
Available Commands:
bruteforce Enumerate all GCP permissions
enumerate Enumerate specified GCP permissions
rest GCP permissions using the REST API
Flags:
-h, --help help for gcp
--project-id string GCP project id
--region string GCP Region (default "us-central1")
--service-account string GCP service account path
--zone string GCP Zone (default "us-central1-a")
Global Flags:
--max-threads int Maximum number of threads to use. (default 5)
--request-timeout int Timeout for each request in seconds. (default 10)
Use "cliam gcp [command] --help" for more information about a command.
L'enumerazione di Azure supporta vari metodi di autenticazione inclusi service principal (tramite client id e secret), certificato MSI (tramite token MSI) o autenticazione predefinita. Supporta anche tutte le variabili d'ambiente comuni di Azure:
AZURE_CLIENT_ID : client id o usernameAZURE_CLIENT_SECRET : client secretAZURE_SUBSCRIPTION_ID : id sottoscrizioneAZURE_CLIENT_CERTIFICATE_PATH : percorso del certificatoAZURE_TENANT_ID : tenant idCLIAM_AZURE_OAUTH_TOKEN : token OAuth esistente❯❯ cliam azure
Enumerate Azure credentials for their permissions.
In most cases, a valid Azure Subscription ID is required. If one
is not provided, the CLI will attempt to lookup available subscriptions
and use the first one.
Usage:
cliam azure [command]
Available Commands:
access-token Get access token to use with REST apis
enumerate Enumerate permissions for specified azure resources.
service Enumerate permissions for a specific group of azure services.
subscriptions List all subscriptions
cliam supporta due variabili d'ambiente per mostrare l'output di debug:
DEBUG=true (mostra i codici di stato delle richieste)VERBOSE=true (mostra il corpo delle richieste)