cloudlist 可用的所有标志和选项,请查看使用方法页面。在本页面,您可以找到一些带有输出的示例、Cloudlist 支持的详情以及配置细节。
如果您有问题,请通过帮助联系我们。
基本示例
Copy
cloudlist
provider 和 id 过滤器指定特定供应商和资产类型。
Copy
cloudlist -provider aws,gcp
________ _____ __
/ ____/ /___ __ ______/ / (_)____/ /_
/ / / / __ \/ / / / __ / / / ___/ __/
/ /___/ / /_/ / /_/ / /_/ / / (__ ) /_
\____/_/\____/\__,_/\__,_/_/_/____/\__/ v0.0.1
projectdiscovery.io
[WRN] 谨慎使用。您需要对自己的行为负责
[WRN] 开发者不承担任何误用或损害的责任。
[INF] 正在列出来自 AWS (prod) 供应商的资产。
example.com
example2.com
example3.com
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
6.6.6.6
[INF] 从 AWS 服务 (prod) 中找到了 2 个主机和 6 个 IP
将 cloudlist 与 Nuclei 一起使用
扫描来自各种云供应商的资产以进行安全评估:Copy
cloudlist -silent | httpx -silent | nuclei -t cves/
支持的供应商
有关支持的云供应商的完整列表,请参阅云供应商。配置文件
默认的供应商配置文件应位于$HOME/.config/cloudlist/provider-config.yaml,以下是示例内容。为了运行此工具,需要在配置文件中为所需的供应商更新密钥。
供应商配置示例
Copy
- provider: do # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: xxxx
# digitalocean_token 是 digitalocean 云平台的 API 密钥
digitalocean_token: $DIGITALOCEAN_TOKEN
- provider: scw # provider 是供应商的名称
# scaleway_access_key 是 scaleway API 的访问密钥
scaleway_access_key: $SCALEWAY_ACCESS_KEY
# scaleway_access_token 是 scaleway API 的访问令牌
scaleway_access_token: $SCALEWAY_ACCESS_TOKEN
- provider: aws # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# aws_access_key 是 AWS 账户的访问密钥
aws_access_key: $AWS_ACCESS_KEY
# aws_secret_key 是 AWS 账户的密钥
aws_secret_key: $AWS_SECRET_KEY
# aws_session_token 是通过 STS 检索的临时安全凭证的会话令牌(可选)
aws_session_token: $AWS_SESSION_TOKEN
- provider: gcp # provider 是供应商的名称
# profile 是供应商配置文件的名称
id: logs
# gcp_service_account_key 是具有列表权限的 Google Cloud 服务账户的压缩 JSON
gcp_service_account_key: '{xxxxxxxxxxxxx}'
- provider: azure # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# client_id 是 azure 账户注册应用程序的客户端 ID(如果使用 CLI 认证则不需要)
client_id: $AZURE_CLIENT_ID
# client_secret 是 azure 账户注册应用程序的密钥 ID(如果使用 CLI 认证则不需要)
client_secret: $AZURE_CLIENT_SECRET
# tenant_id 是 azure 账户注册应用程序的租户 ID(如果使用 CLI 认证则不需要)
tenant_id: $AZURE_TENANT_ID
# subscription_id 是 azure 订阅 ID
subscription_id: $AZURE_SUBSCRIPTION_ID
# use_cli_auth 如果设置为 true,cloudlist 将使用 azure CLI 认证
use_cli_auth: true
- provider: cloudflare # provider 是供应商的名称
# email 是 cloudflare 的电子邮件
email: $CF_EMAIL
# api_key 是 cloudflare 的 API 密钥
api_key: $CF_API_KEY
# api_token 是 cloudflare 的范围 API 令牌(可选)
api_token: $CF_API_TOKEN
- provider: heroku # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# heroku_api_token 是 Heroku 账户的 API 密钥
heroku_api_token: $HEROKU_API_TOKEN
- provider: linode # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# linode_personal_access_token 是 linode 账户的个人访问令牌
linode_personal_access_token: $LINODE_PERSONAL_ACCESS_TOKEN
- provider: fastly # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# fastly_api_key 是 fastly 账户的个人 API 令牌
fastly_api_key: $FASTLY_API_KEY
- provider: alibaba # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# alibaba_region_id 是资源的区域 ID
alibaba_region_id: $ALIBABA_REGION_ID
# alibaba_access_key 是阿里云账户的访问密钥 ID
alibaba_access_key: $ALIBABA_ACCESS_KEY
# alibaba_access_key_secret 是阿里云账户的密钥
alibaba_access_key_secret: $ALIBABA_ACCESS_KEY_SECRET
- provider: namecheap # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# namecheap_api_key 是 namecheap 账户的 API 密钥
namecheap_api_key: $NAMECHEAP_API_KEY
# namecheap_user_name 是 namecheap 账户的用户名
namecheap_user_name: $NAMECHEAP_USER_NAME
- provider: terraform # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# tf_state_file 是 terraform 状态文件(terraform.tfstate)的位置
tf_state_file: path/to/terraform.tfstate
- provider: hetzner # provider 是供应商的名称
# id 是用户为过滤定义的名称(可选)
id: staging
# auth_token 是 hetzner 认证令牌
auth_token: $HETZNER_AUTH_TOKEN
- provider: nomad # provider 是供应商的名称
# nomad_url 是 nomad 服务器的 URL
nomad_url: http:/127.0.0.1:4646/
# nomad_ca_file 是 nomad CA 文件的路径
# nomad_ca_file: <path-to-ca-file>.pem
# nomad_cert_file 是 nomad 证书文件的路径
# nomad_cert_file: <path-to-cert-file>.pem
# nomad_key_file 是 nomad 证书密钥文件的路径
# nomad_key_file: <path-to-key-file>.pem
# nomad_token 是 nomad 认证令牌
# nomad_token: <nomad-token>
# nomad_http_auth 是 nomad http 认证值
# nomad_http_auth: <nomad-http-auth-value>
- provider: consul # provider 是供应商的名称
# consul_url 是 consul 服务器的 URL
consul_url: http://localhost:8500/
# consul_ca_file 是 consul CA 文件的路径
# consul_ca_file: <path-to-ca-file>.pem
# consul_cert_file 是 consul 证书文件的路径
# consul_cert_file: <path-to-cert-file>.pem
# consul_key_file 是 consul 证书密钥文件的路径
# consul_key_file: <path-to-key-file>.pem
# consul_http_token 是 consul 认证令牌
# consul_http_token: <consul-token>
# consul_http_auth 是 consul http 认证值
# consul_http_auth: <consul-http-auth-value>
- provider: openstack # provider 是供应商的名称
# id 是供应商 ID 的名称
id: staging
# identity_endpoint 是用于认证的 OpenStack 身份端点
identity_endpoint: $OS_IDENTITY_ENDPOINT
# domain_name 是用于认证的 OpenStack 域名
domain_name: $OS_DOMAIN_NAME
# tenant_name 是 OpenStack 项目名称
tenant_name: $OS_TENANT_NAME
# username 是用于认证的 OpenStack 用户名
username: $OS_USERNAME
# password 是用于认证的 OpenStack 密码
password: $OS_PASSWORD
- provider: kubernetes # provider 是供应商的名称
# id 是供应商 ID 的名称
id: staging
# kubeconfig_file 是 kubeconfig 文件的路径
kubeconfig: path/to/kubeconfig
# context 是从 kubeconfig 文件中使用的上下文
context: <context-name>
作为库使用 Cloudlist
可以在 Go 程序中直接使用该库。以下代码片段概述了如何从所有或给定的云供应商列出资产。Copy
package main
import (
"context"
"log"
"github.com/projectdiscovery/cloudlist/pkg/inventory"
"github.com/projectdiscovery/cloudlist/pkg/schema"
)
func main() {
inventory, err := inventory.New(schema.Options{
schema.OptionBlock{"provider": "digitalocean", "digitalocean_token": "ec405badb974fd3d891c9223245f9ab5871c127fce9e632c8dc421edd46d7242"},
})
if err != nil {
log.Fatalf("%s\n", err)
}
for _, provider := range inventory.Providers {
resources, err := provider.Resources(context.Background())
if err != nil {
log.Fatalf("%s\n", err)
}
for _, resource := range resources.Items {
_ = resource // 对资源做一些处理
}
}
}