
Énumérateur de permissions IAM agnostique au cloud
Outil d'énumération des permissions IAM multi-cloud. Couvre actuellement :
Cliam est un simple identifiant de permissions cloud. Il comporte deux composants principaux en ligne de commande. La plupart des permissions énumérées sont des permissions de type list, describe ou get.
enumerate qui peut être utilisé pour énumérer des permissions spécifiques (recommandé)Téléchargez la dernière version. Les tags DEV sont actuels, mais pas stables.
Pour compiler le binaire localement, placez-vous dans le répertoire cli et exécutez make dev
Cliam fonctionne avec des identifiants obtenus à partir des variables d'environnement bien connues des services ou en passant les options couramment requises depuis la CLI.
Il est fortement recommandé de définir les complétions de commandes, car la plupart des options enumerate doivent être spécifiques. Pour générer les complétions, utilisez cliam completion [shell] et configurez selon le répertoire de complétion de votre 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.
Utilise l'API REST AWS pour effectuer une requête signée à l'aide des identifiants fournis. Cela augmente considérablement la vitesse, mais rend plus difficile le suivi de l'ajout de nouvelles permissions. Le problème d'échelle est qu'AWS utilise 3 à 4 variétés de requêtes au niveau du service.
Prend en charge l'obtention d'identifiants via le profil AWS, les options, ou les variables d'environnement AWS par défaut comme AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY et éventuellement 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 pour AWS permet également d'énumérer certaines permissions nécessitant une valeur connue. Par exemple, avec awscli, on peut obtenir une fonction en utilisant aws lambda get-function --function-name <function_name>.
Cela correspond directement à cliam où nous pouvons utiliser :
cliam aws enumerate lamda --known-value function-name=<function_name>
Cela énumérera toutes les permissions pour lambda qui accepte function-name comme argument valide. Cela fonctionnera également avec d'autres ressources AWS.
Bruteforce de toutes les ressources serverless depuis un profil AWS
❯❯ cliam aws service-group serverless --profile=my-profile
Utilisez les jetons de session temporaires obtenus pour vérifier toutes les permissions EC2
❯❯ cliam aws enumerate ec2 --session-json=creds.json
Where creds.json has
{
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIA...",
"SecretAccessKey" : "...",
"Token" : "...",
}
Énumérez les permissions pour s3, iam et ec2
❯❯ cliam aws enumerate s3 iam ec2
GCP prend en charge l'énumération à partir d'un fichier JSON de compte de service spécifique. Les identifiants issus des variables d'environnement GCP .GOOGLE_APPLICATION_CREDENTIALS et CLOUDSDK_CORE_PROJECT sont également pris en charge
Comme il existe deux modes pour l'énumération GCP, utilisez enumerate si cloudresourcemanager est activé, ou utilisez rest pour énumérer des permissions spécifiques.
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'énumération Azure prend en charge diverses méthodes d'authentification, notamment les principaux de service (via l'identifiant client et le secret), le certificat MSI (via le jeton MSI), ou l'authentification par défaut. Il prend également en charge toutes les variables d'environnement Azure courantes.
❯❯ 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 prend en charge deux variables d'environnement pour afficher les sorties de débogage