Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sa7mon/s3scanner
漏洞扫描器信息收集云安全错误配置
GitHubsa7mon/s3scanner

S3Scanner

扫描在兼容S3的API中配置错误的S3存储桶!

查看仓库网站
3.2k41441个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

S3Scanner

功能 - 使用方法 - 快速上手 - 安装 - 讨论


一款用于在 AWS 或其他云提供商中查找公开 S3 存储桶的工具:
  • AWS
  • DigitalOcean
  • DreamHost
  • GCP
  • Linode
  • Scaleway
  • 自定义
演示

功能

  • ⚡️ 多线程扫描
  • 🔭 支持多种内置 S3 存储提供商或自定义
  • 🕵️‍♀️ 扫描所有存储桶权限以发现配置错误
  • 💾 将结果保存到 Postgres 数据库
  • 🐇 连接到 RabbitMQ 以进行大规模自动化扫描
  • 🐳 Docker 支持

被以下项目使用

six2dez/reconftw 的横幅 yogeshojha/rengine 的横幅 pry0cc/axiom 的横幅 - 显示“面向所有人的动态基础设施框架”

使用方法

root@kitploit:~
输入:(1 个必填)
  -bucket        string  要检查的存储桶名称。
  -bucket-file   string  包含要检查的存储桶名称的文件。
  -mq                    连接到 RabbitMQ 以获取存储桶。需要配置文件键 "mq"。默认值:"false"

输出:
  -db       将结果保存到 Postgres 数据库。需要配置文件键 "db.uri"。默认值:"false"
  -json     以 JSON 格式将日志输出到标准输出,而非人类可读格式。默认值:"false"

选项:
  -enumerate           枚举存储桶对象(可能耗时)。默认值:"false"
  -provider    string  对象存储提供商:aws、custom、digitalocean、dreamhost、gcp、linode、scaleway - custom 需要配置文件。默认值:"aws"
  -threads     int     扫描使用的线程数。默认值:"4"

调试:
  -verbose     启用详细日志记录。默认值:"false"
  -version     打印版本。默认值:"false"

如果需要配置文件,将在以下位置搜索 config.yml:"."、"/etc/s3scanner/"、"$HOME/.s3scanner/"

🚀 支持

如果您发现此工具有用,请考虑捐赠以支持其开发。您可以在本仓库页面侧边栏或 FUNDING.yml 中找到赞助选项。

衷心感谢 tines 对本项目的持续赞助。

快速上手

扫描 AWS 中文件中列出的存储桶名称,枚举所有对象

root@kitploit:~
$ s3scanner -bucket-file names.txt -enumerate

扫描 GCP 中的存储桶,枚举所有对象,并将结果保存到数据库

root@kitploit:~
$ s3scanner -provider gcp -db -bucket my-bucket -enumerate

安装

使用说明

输入

s3scanner 需要恰好一种输入类型:-bucket、-bucket-file 或 -mq。

root@kitploit:~
输入:(1 个必填)
  -bucket        string  要检查的存储桶名称。
  -bucket-file   string  包含要检查的存储桶名称的文件。
  -mq                    连接到 RabbitMQ 以获取存储桶。需要配置文件键 "mq"。默认值:"false"

-bucket

扫描单个存储桶

root@kitploit:~
s3scanner -bucket secret_uploads

-bucket-file

扫描文件中列出的每个存储桶名称

root@kitploit:~
s3scanner -bucket-file names.txt

其中 names.txt 每行包含一个存储桶名称

root@kitploit:~
$ cat names.txt
bucket123
assets
image-uploads

重复列出的存储桶名称只会被扫描一次。

-mq

连接到 RabbitMQ 服务器并消费包含要扫描的存储桶名称的消息。

root@kitploit:~
s3scanner -mq

消息应为 JSON 编码的 Bucket 对象——请参考 mqingest 获取 Golang 发布示例。

-mq 需要配置文件键 mq.uri 和 mq.queue_name。请参阅配置文件部分获取示例。

输出

root@kitploit:~
输出:
  -db       将结果保存到 Postgres 数据库。需要配置文件键 "db.uri"。默认值:"false"
  -json     以 JSON 格式将日志输出到标准输出,而非人类可读格式。默认值:"false"

-db

将所有扫描结果保存到 PostgreSQL 数据库

root@kitploit:~
s3scanner -bucket images -db
  • 需要配置文件键 db.uri。请参阅配置文件部分获取示例。
  • 如果使用 -db,结果也会打印到控制台,无论是否使用 -json 或默认的人类可读输出模式。
  • s3scanner 每次连接到数据库时都会运行 Gorm 的 自动迁移 功能。如果 数据库中已存在 Gorm 所期望名称的表,它可能会修改这些表的结构。建议创建一个专门用于 s3scanner 结果的 Postgres 模式(Schema)。

-json

不将扫描结果以人类可读格式输出到控制台,而是输出机器可读的 JSON。

root@kitploit:~
s3scanner -bucket images -json

这将在控制台每行打印一个 JSON 对象,然后可以将其通过管道传递给 jq 或其他接受 JSON 输入的工具。

示例:打印所有存在的存储桶的名称和区域

root@kitploit:~
$ s3scanner -bucket-file names.txt -json | jq -r '. | select(.bucket.exists==1) | [.bucket.name, .bucket.region] | join(" - ")'       
10000 - eu-west-1
10000.pizza - ap-southeast-1
images_staging - us-west-2

选项

root@kitploit:~
选项:
  -enumerate           枚举存储桶对象(可能耗时)。默认值:"false"
  -provider    string  对象存储提供商:aws、custom、digitalocean、dreamhost、gcp、linode、scaleway - custom 需要配置文件。默认值:"aws"
  -threads     int     扫描使用的线程数。默认值:"4"

-enumerate

枚举存储桶中存储的所有对象。默认情况下,s3scanner 只会检查存储桶的权限。

root@kitploit:~
s3scanner -bucket attachments -enumerate
  • 注意: 如果存储了大量对象,这可能需要很长时间。
  • 枚举时,s3scanner 将请求每页 1,000 个对象。如果对象页数超过 5,000 页,它将跳过剩余部分。

-provider

检查存储桶时要使用的存储提供商名称。

root@kitploit:~
s3scanner -bucket assets -provider gcp
  • 当针对当前不受支持的或本地网络存储提供商时,使用 "custom"。
  • "custom" 提供商需要配置文件部分中列出的 providers.custom 下的配置文件键。

-threads

扫描使用的线程数。

root@kitploit:~
s3scanner -bucket secret_docs -threads 8
  • 增加线程数会提高同时扫描的存储桶数量,但不会加快对象枚举速度。枚举目前是每个存储桶单线程的。

调试

root@kitploit:~
调试:
  -verbose     启用详细日志记录。默认值:"false"
  -version     打印版本。默认值:"false"

-verbose

启用调试消息的详细日志记录。此选项会产生大量日志,除非提交错误报告,否则不建议使用。

root@kitploit:~
s3scanner -bucket spreadsheets -verbose

-version

打印版本信息并退出。

root@kitploit:~
s3scanner -version
  • 如果从源代码编译,将打印 dev。

开发

提供了一个 docker compose 文件,创建了 4 个容器:

  • rabbitmq
  • postgres
  • app
  • mitm

配置了 2 个配置文件(profile):

  • dev - 标准开发环境
  • dev-mitm - 配置了 mitmproxy 的环境,以便在调试或添加新提供商时更容易观察 HTTP 流量。

要启动开发环境,运行 make dev 或 make dev-mitm。使用 docker exec -it -w /app app_dev sh 进入 app 容器,然后运行 go run . 如果使用 dev-mitm 配置文件,请在浏览器中打开 http://127.0.0.1:8081 以查看和操作来自 app 容器的 HTTP 调用。

配置文件

如果使用需要配置选项的标志,s3scanner 将在以下位置搜索 config.yml:

  • (当前目录)
  • /etc/s3scanner/
  • $HOME/.s3scanner/
root@kitploit:~
# -db 必需
db:
  uri: "postgresql://user:[email protected]:5432/schema_name"

# -mq 必需
mq:
  queue_name: "aws"
  uri: "amqp://user:pass@localhost:5672"

# providers.custom 由 `-provider custom` 使用
#   address_style - 端点使用的寻址样式。
#     类型:string
#     值:"path" 或 "vhost"
#   endpoint_format - 端点 URL 的格式。应包含 '$REGION' 作为区域名称的占位符
#     类型:string
#   insecure - 忽略 SSL 错误
#     类型:boolean
# regions 必须至少包含一个选项
providers:
  custom: 
    address_style: "path"
    endpoint_format: "https://$REGION.vultrobjects.com"
    insecure: false
    regions:
      - "ewr1"

当 s3scanner 解析配置文件时,它会将 endpoint_format 中的 $REGION 替换为所有列出的 regions,以创建端点 URL 列表。

S3 兼容 APIs

注意: S3Scanner 目前仅支持扫描非 AWS 服务的匿名用户权限

📚 有关非 AWS API 的更多信息,请参阅 项目维基。

权限

此工具将尝试获取关于一个存储桶的所有可用信息,但由您自行解释结果。

存储桶的 可能权限:

  • 读取(Read) - 列出并查看所有文件
  • 写入(Write) - 向存储桶写入文件
  • 读取 ACP(Read ACP) - 读取附加到存储桶的所有访问控制策略
  • 写入 ACP(Write ACP) - 向存储桶写入访问控制策略
  • 完全控制(Full Control) - 以上所有权限

这些权限中的任意或全部可以针对 2 个主要用户组设置:

  • 已认证用户(Authenticated Users)
  • 公共用户(Public Users)(未设置 AWS 凭据的用户)
  • 个人用户/组(此工具范围之外)

这意味着: 仅仅因为一个存储桶不允许读取/写入 ACL,并不意味着您不能读取/写入存储桶中的文件。相反,您可能能够列出 ACL,但不能读取/写入存储桶。

许可证

MIT

下载工具
平台版本步骤
BlackArchBlackArch 包pacman -S s3scanner
DockerDocker 发布版本docker run ghcr.io/sa7mon/s3scanner
GoGolanggo install -v github.com/sa7mon/s3scanner@latest
Kali LinuxKali 包apt install s3scanner
MacOShomebrew 版本brew install s3scanner
Parrot OSParrot 包apt install s3scanner
Windows - wingetwinget install s3scanner
NixOS 稳定版nixpkgs 不稳定包nix-shell -p s3scanner
NixOS 不稳定版nixpkgs 不稳定包nix-shell -p s3scanner
其他 - 从源码编译GitHub 发布版本git clone [email protected]:sa7mon/S3Scanner.git && cd S3Scanner && go build -o s3scanner .