Convert Figma logo to code with AI

projectdiscovery logocloudlist

Cloudlist is a tool for listing Assets from multiple Cloud Providers.

1,042
130
1,042
6

Top Related Projects

Automating situational awareness for cloud penetration tests.

Multi-Cloud Security Auditing Tool

Cloud Security Posture Management (CSPM)

CloudMapper helps you analyze your Amazon Web Services (AWS) environments.

5,285

The AWS exploitation framework, designed for testing the security of Amazon Web Services environments.

Cloudsplaining is an AWS IAM Security Assessment tool that identifies violations of least privilege and generates a risk-prioritized report.

Quick Overview

Cloudlist is an open-source tool designed to enumerate cloud assets across multiple providers. It helps security professionals and developers discover and list assets associated with cloud accounts, providing a comprehensive view of an organization's cloud infrastructure.

Pros

  • Supports multiple cloud providers (AWS, Azure, GCP, DigitalOcean, Alibaba Cloud, and more)
  • Easy to use with a simple command-line interface
  • Provides detailed output in various formats (JSON, CSV, YAML)
  • Actively maintained and regularly updated

Cons

  • Requires API keys or credentials for each cloud provider, which may pose security risks if not handled properly
  • Limited customization options for filtering and sorting results
  • May not cover all possible asset types for each cloud provider
  • Performance can be slow when enumerating large cloud infrastructures

Getting Started

  1. Install Cloudlist:
go install -v github.com/projectdiscovery/cloudlist/cmd/cloudlist@latest
  1. Create a configuration file (e.g., config.yaml) with your cloud provider credentials:
cloudlist:
  - provider: aws
    profile_name: default
  - provider: azure
    client_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    tenant_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  1. Run Cloudlist:
cloudlist -config config.yaml

This will enumerate assets across the configured cloud providers and display the results in the terminal. You can use additional flags like -o to specify an output file or -j for JSON output.

Competitor Comparisons

Automating situational awareness for cloud penetration tests.

Pros of CloudFox

  • More comprehensive cloud enumeration and attack surface mapping
  • Supports multiple cloud providers (AWS, Azure, GCP)
  • Includes advanced features like privilege escalation checks

Cons of CloudFox

  • More complex setup and configuration
  • Steeper learning curve for new users
  • May require additional permissions for full functionality

Code Comparison

CloudFox:

func (e *Enumerator) EnumerateIAMUsers() ([]*iam.User, error) {
    var users []*iam.User
    err := e.IAMClient.ListUsersPages(&iam.ListUsersInput{},
        func(page *iam.ListUsersOutput, lastPage bool) bool {
            users = append(users, page.Users...)
            return !lastPage
        })
    return users, err
}

CloudList:

func (p *AWSProvider) listUsers(ctx context.Context) ([]cloud.User, error) {
    var users []cloud.User
    input := &iam.ListUsersInput{}
    err := p.iamClient.ListUsersPagesWithContext(ctx, input,
        func(page *iam.ListUsersOutput, lastPage bool) bool {
            for _, user := range page.Users {
                users = append(users, cloud.User{ID: *user.UserId, Name: *user.UserName})
            }
            return !lastPage
        })
    return users, err
}

Both projects aim to enumerate cloud resources, but CloudFox offers a more comprehensive set of features for cloud security assessment. CloudList, on the other hand, provides a simpler and more focused approach to resource discovery. The code comparison shows similar implementations for listing IAM users, with CloudFox using a dedicated Enumerator struct and CloudList utilizing a provider-specific approach.

Multi-Cloud Security Auditing Tool

Pros of ScoutSuite

  • Comprehensive security auditing tool for multiple cloud providers (AWS, Azure, GCP, etc.)
  • Generates detailed HTML reports with security findings and recommendations
  • Supports custom rulesets for tailored security assessments

Cons of ScoutSuite

  • Requires more setup and configuration compared to Cloudlist
  • May have a steeper learning curve for users new to cloud security auditing
  • Can be slower to run due to its comprehensive nature

Code Comparison

ScoutSuite (Python):

from ScoutSuite.core.cli_parser import ScoutSuiteArgumentParser
from ScoutSuite.core.console_manager import ConsoleManager
from ScoutSuite.core.exceptions import RuleExceptions
from ScoutSuite.core.processingengine import ProcessingEngine
from ScoutSuite.core.ruleset import Ruleset

Cloudlist (Go):

package main

import (
    "github.com/projectdiscovery/cloudlist/pkg/runner"
    "github.com/projectdiscovery/gologger"
)

func main() {
    options := runner.ParseOptions()
    runner.New(options).Run()
}

ScoutSuite is a more comprehensive tool for cloud security auditing, offering detailed reports and custom rulesets. However, it may require more setup and have a steeper learning curve. Cloudlist, on the other hand, is simpler to use and focuses on quick enumeration of cloud assets across multiple providers. The code comparison shows that ScoutSuite is written in Python and has a more complex structure, while Cloudlist is written in Go and has a simpler main function.

Cloud Security Posture Management (CSPM)

Pros of Cloudsploit

  • Comprehensive security and compliance checks across multiple cloud providers
  • Extensive documentation and community support
  • Integrates with CI/CD pipelines for automated security scanning

Cons of Cloudsploit

  • Requires more setup and configuration compared to Cloudlist
  • May have a steeper learning curve for beginners
  • Limited to security and compliance checks, not asset discovery

Code Comparison

Cloudlist (asset discovery):

func (p *Provider) getInstances(ctx context.Context) ([]cloudlist.Asset, error) {
    var assets []cloudlist.Asset
    input := &ec2.DescribeInstancesInput{}
    result, err := p.ec2Client.DescribeInstances(ctx, input)
    if err != nil {
        return nil, err
    }
    // Process instances and add to assets
}

Cloudsploit (security check):

const async = require('async');
const helpers = require('../../../helpers/aws');

module.exports = {
    title: 'Open SSH',
    category: 'EC2',
    description: 'Ensures SSH (port 22) is not open to the public',
    more_info: 'While some ports such as HTTP and HTTPS are required to be open...',
    link: 'http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html',
    recommended_action: 'Restrict SSH access to trusted IP addresses',
    apis: ['EC2:describeSecurityGroups', 'EC2:describeNetworkInterfaces', 'Lambda:listFunctions'],
    settings: {
        ec2_skip_unused_groups: {
            name: 'EC2 Skip Unused Groups',
            description: 'When set to true, skip checking security groups that are not associated with a network interface',
            regex: '^(true|false)$',
            default: 'false'
        }
    },
    run: function(cache, settings, callback) {
        // Plugin logic
    }
};

CloudMapper helps you analyze your Amazon Web Services (AWS) environments.

Pros of CloudMapper

  • More comprehensive visualization capabilities, including interactive network diagrams
  • Supports advanced security assessments and risk analysis
  • Offers detailed reporting and customizable outputs

Cons of CloudMapper

  • Primarily focused on AWS, limiting its use for multi-cloud environments
  • Steeper learning curve and more complex setup process
  • Less frequent updates compared to CloudList

Code Comparison

CloudMapper:

from cloudmapper.nodes import Account, Region
from cloudmapper.prepare import build_data_structure

account = Account(None, 'demo')
region = Region(account, 'us-west-2')
build_data_structure(account, region, args)

CloudList:

package main

import (
    "github.com/projectdiscovery/cloudlist/pkg/inventory"
)

func main() {
    inventory.New().GetCloudAssets()
}

CloudMapper offers a more structured approach with separate classes for accounts and regions, while CloudList provides a simpler, more straightforward implementation for retrieving cloud assets. CloudMapper's code suggests a more detailed and granular analysis of cloud infrastructure, whereas CloudList focuses on quick and efficient asset discovery across multiple cloud providers.

5,285

The AWS exploitation framework, designed for testing the security of Amazon Web Services environments.

Pros of pacu

  • More comprehensive AWS security testing tool with a broader range of modules
  • Interactive command-line interface for easier navigation and use
  • Supports session management for multiple AWS environments

Cons of pacu

  • Focused solely on AWS, while cloudlist supports multiple cloud providers
  • Steeper learning curve due to its more complex feature set
  • Requires more setup and configuration compared to cloudlist's simpler approach

Code Comparison

pacu:

import boto3
from botocore.exceptions import ClientError

def run(args, pacu_main):
    session = pacu_main.get_active_session()
    print('Starting module...')
    client = pacu_main.get_boto3_client('ec2')

cloudlist:

func (p *AWSProvider) getInstances(ctx context.Context) ([]cloud.Resource, error) {
	var resources []cloud.Resource
	err := p.ec2Client.DescribeInstancesPagesWithContext(ctx, &ec2.DescribeInstancesInput{}, func(page *ec2.DescribeInstancesOutput, _ bool) bool {
		for _, reservation := range page.Reservations {
			for _, instance := range reservation.Instances {

Both tools aim to interact with cloud resources, but pacu focuses on AWS security testing with a Python-based approach, while cloudlist is written in Go and provides a more general-purpose cloud resource enumeration across multiple providers.

Cloudsplaining is an AWS IAM Security Assessment tool that identifies violations of least privilege and generates a risk-prioritized report.

Pros of Cloudsplaining

  • Focuses specifically on AWS IAM policy analysis and security assessment
  • Provides detailed reports and visualizations of IAM misconfigurations
  • Integrates well with existing AWS security workflows and tools

Cons of Cloudsplaining

  • Limited to AWS IAM policies, while Cloudlist covers multiple cloud providers
  • Requires more setup and configuration compared to Cloudlist's simpler approach
  • May have a steeper learning curve for users unfamiliar with AWS IAM concepts

Code Comparison

Cloudlist example:

cloudlist -config config.yaml

Cloudsplaining example:

from cloudsplaining.scan.policy_document import PolicyDocument

policy = PolicyDocument(policy_dict)
findings = policy.analyze()

While Cloudlist focuses on discovering and listing cloud assets across multiple providers with a simple command-line interface, Cloudsplaining provides in-depth analysis of AWS IAM policies using a Python-based approach. Cloudlist offers broader coverage but less detailed analysis, while Cloudsplaining provides deep insights into AWS IAM misconfigurations but is limited to that specific use case.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

cloudlist

Features • Installation • Usage • Configuration • Running cloudlist • Supported providers • Library • Join Discord

Cloudlist is a multi-cloud tool for getting Assets from Cloud Providers. This is intended to be used by the blue team to augment Attack Surface Management efforts by maintaining a centralized list of assets across multiple clouds with very little configuration efforts.

Features

cloudlist

  • List Cloud assets with multiple configurations
  • Multiple Cloud providers support
  • Keyless authentication support (AWS IRSA / instance profiles, GCP workload identity)
  • Multiple output format support
  • Multiple filters support
  • Highly extensible making adding new providers a breeze
  • stdout support to work with other tools in pipelines

Usage

cloudlist -h

This will display help for the tool. Here are all the switches it supports.

Cloudlist is a tool for listing Assets from multiple cloud providers.

Usage:
  ./cloudlist [flags]

Flags:
CONFIGURATION:
   -config string                cloudlist flag config file (default "$HOME/.config/cloudlist/config.yaml")
   -pc, -provider-config string  provider config file (default "$HOME/.config/cloudlist/provider-config.yaml")

FILTERS:
   -p, -provider value          display results for given providers (comma-separated) (default linode,fastly,heroku,terraform,digitalocean,consul,cloudflare,hetzner,nomad,do,scw,openstack,alibaba,aws,gcp,namecheap,kubernetes,azure, custom)
   -id string[]                 display results for given ids (comma-separated)
   -host                        display only hostnames in results
   -ip                          display only ips in results
   -s, -service value           query and display results from given service (comma-separated) (default cloudfront,gke,domain,compute,ec2,instance,cloud-function,app,eks,custom,consul,droplet,vm,ecs,fastly,alb,s3,lambda,elb,cloud-run,route53,publicip,dns,service,nomad,lightsail,ingress,apigateway)
   -es, -exclude-service value  services to skip for a provider (comma-separated)
   -ep, -exclude-private        exclude private ips in cli output

UPDATE:
   -up, -update                 update cloudlist to latest version
   -duc, -disable-update-check  disable automatic cloudlist update check

OUTPUT:
   -o, -output string  output file to write results
   -json               write output in json format
   -version            display version of cloudlist
   -v                  display verbose output
   -silent             display only results in output

Documentation

GCP Asset API Support

Cloudlist supports two approaches for GCP asset discovery:

  • Organization-Level Asset API - Comprehensive organization-wide discovery using Cloud Asset Inventory API
  • Individual Service APIs - Fast project-specific discovery using individual GCP service APIs

For detailed setup instructions, required permissions, service account configuration, and usage examples, see:

📚 docs/GCP_ASSET_API.md

Contribution

Please check PROVIDERS.md and DESIGN.md to include support for new cloud providers in Cloudlist.

  • Fork this project
  • Create your feature branch (git checkout -b new-provider)
  • Commit your changes (git commit -am 'Added new cloud provider')
  • Push to the branch (git push origin new-provider)
  • Create new Pull Request

Acknowledgments

Thank you for inspiration

License

cloudlist is made with 🖤 by the projectdiscovery team and licensed under MIT