Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/sa7mon/s3scanner
脆弱性スキャナー情報収集クラウドセキュリティ設定ミス
GitHubsa7mon/s3scanner

S3Scanner

S3互換API全体で設定ミスのあるS3バケットをスキャンします!

リポジトリを見るウェブサイト
3.2k4141ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

S3Scanner

機能 - 使い方 - クイックスタート - インストール - 議論


AWSや他のクラウドプロバイダーでオープンなS3バケットを見つけるためのツール:
  • AWS
  • DigitalOcean
  • DreamHost
  • GCP
  • Linode
  • Scaleway
  • Custom
デモ

機能

  • ⚡️ マルチスレッドスキャン
  • 🔭 多くのビルトインS3ストレージプロバイダーまたはカスタムをサポート
  • 🕵️‍♀️ すべてのバケット権限をスキャンして設定ミスを発見
  • 💾 結果をPostgresデータベースに保存
  • 🐇 大規模な自動スキャンにRabbitMQに接続
  • 🐳 Docker対応

使用例

six2dez/reconftwのバナー yogeshojha/rengineのバナー pry0cc/axiomのバナー - 'すべての人のための動的インフラストラクチャフレームワーク'と書かれています

使い方

root@kitploit:~
INPUT: (1 required)
  -bucket        string  チェックするバケットの名前。
  -bucket-file   string  チェックするバケット名のファイル。
  -mq                    RabbitMQに接続してバケットを取得する。設定ファイルのキー"mq"が必要。デフォルト: "false"

OUTPUT:
  -db       結果をPostgresデータベースに保存する。設定ファイルのキー"db.uri"が必要。デフォルト: "false"
  -json     ログを人間が読める形式ではなくJSON形式でstdoutに出力する。デフォルト: "false"

OPTIONS:
  -enumerate           バケットのオブジェクトを列挙する(時間がかかる場合あり)。デフォルト: "false"
  -provider    string  オブジェクトストレージプロバイダー: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway - custom は設定ファイルが必要。デフォルト: "aws"
  -threads     int     スキャンに使用するスレッド数。デフォルト: "4"

DEBUG:
  -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 のいずれか1つの入力タイプを必要とします。

root@kitploit:~
INPUT: (1 required)
  -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 には1行に1つのバケット名が含まれます

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

複数回リストされたバケット名は1回だけスキャンされます。

-mq

RabbitMQサーバーに接続し、スキャンするバケット名を含むメッセージを消費します。

root@kitploit:~
s3scanner -mq

メッセージはJSONエンコードされた Bucket オブジェクトである必要があります - Golangでの公開例は mqingest を参照してください。

-mq は設定ファイルのキー mq.uri と mq.queue_name が必要です。例は設定ファイルのセクションを参照してください。

出力

root@kitploit:~
OUTPUT:
  -db       結果をPostgresデータベースに保存する。設定ファイルのキー"db.uri"が必要。デフォルト: "false"
  -json     ログを人間が読める形式ではなくJSON形式でstdoutに出力する。デフォルト: "false"

-db

すべてのスキャン結果をPostgreSQLデータベースに保存する

root@kitploit:~
s3scanner -bucket images -db
  • 設定ファイルのキー db.uri が必要です。例は設定ファイルのセクションを参照してください。
  • -db を使用する場合、結果は -json またはデフォルトの人間が読める出力モードを使用していなくてもコンソールにも表示されます。
  • s3scanner はデータベースに接続するたびにGormのAuto Migration機能を実行します。スキーマにすでにGormが期待する名前のテーブルがある場合、これらのテーブルの構造が変更される可能性があります。s3scanner の結果専用のPostgresスキーマを作成することをお勧めします。

-json

スキャン結果を人間が読める形式ではなく、機械可読なJSONで出力します。

root@kitploit:~
s3scanner -bucket images -json

これにより、1行に1つの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:~
OPTIONS:
  -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:~
DEBUG:
  -verbose     詳細なログを有効にする。デフォルト: "false"
  -version     バージョンを表示する。デフォルト: "false"

-verbose

デバッグメッセージの詳細なログを有効にします。このオプションは多くのログを生成するため、バグレポートを提出する場合以外は使用しないことをお勧めします。

root@kitploit:~
s3scanner -bucket spreadsheets -verbose

-version

バージョン情報を表示して終了します。

root@kitploit:~
s3scanner -version
  • ソースからコンパイルされた場合は dev と表示されます。

開発

4つのコンテナを作成するdocker composeファイルが含まれています:

  • rabbitmq
  • postgres
  • app
  • mitm

2つのプロファイルが設定されています:

  • dev - 標準の開発環境
  • dev-mitm - HTTPトラフィックの観察を容易にするため mitmproxy が設定された環境(デバッグや新しいプロバイダーの追加時)

開発環境を起動するには make dev または make dev-mitm を実行します。docker exec -it -w /app app_dev sh で app コンテナに入り、その後 go run . を実行します。 dev-mitm プロファイルを使用する場合は、ブラウザで http://127.0.0.1:8081 を開くと、アプリコンテナから行われているHTTP呼び出しを表示および操作できます。

設定ファイル

設定オプションが必要なフラグを使用する場合、s3scanner は次の場所で config.yml を検索します:

  • (カレントディレクトリ)
  • /etc/s3scanner/
  • $HOME/.s3scanner/
root@kitploit:~
# Required by -db
db:
  uri: "postgresql://user:[email protected]:5432/schema_name"

# Required by -mq
mq:
  queue_name: "aws"
  uri: "amqp://user:pass@localhost:5672"

# providers.custom required by `-provider custom`
#   address_style - Addressing style used by endpoints.
#     type: string
#     values: "path" or "vhost"
#   endpoint_format - Format of endpoint URLs. Should contain '$REGION' as placeholder for region name
#     type: string
#   insecure - Ignore SSL errors
#     type: boolean
# regions must contain at least one option
providers:
  custom: 
    address_style: "path"
    endpoint_format: "https://$REGION.vultrobjects.com"
    insecure: false
    regions:
      - "ewr1"

s3scanner が設定ファイルを解析するとき、endpoint_format を取り、リストされているすべての regions に対して $REGION を置き換えてエンドポイントURLのリストを作成します。

S3互換API

注意: S3Scanner は現在、非AWSサービスの匿名ユーザー権限のスキャンのみをサポートしています

📚 非AWS APIの詳細は プロジェクトWiki にあります。

権限

このツールはバケットに関する利用可能なすべての情報を取得しようとしますが、結果の解釈はユーザーに委ねられます。

バケットの可能な権限:

  • 読み取り - すべてのファイルを一覧表示および表示
  • 書き込み - バケットにファイルを書き込み
  • ACP読み取り - バケットに添付されたすべてのアクセスコントロールポリシーを読み取り
  • ACP書き込み - バケットにアクセスコントロールポリシーを書き込み
  • フルコントロール - 上記すべての権限

これらの権限の一部またはすべては、2つの主要なユーザーグループに設定できます:

  • 認証済みユーザー
  • パブリックユーザー(AWS認証情報を持たないユーザー)
  • 個別のユーザー/グループ(このツールの範囲外)

意味: バケットがACLの読み取り/書き込みを許可していなくても、ファイルの読み取り/書き込みができないというわけではありません。逆に、ACLを一覧表示できても、バケットへの読み取り/書き込みができない場合もあります。

ライセンス

MIT

ツールをダウンロード
プラットフォームバージョン手順
BlackArchBlackArch packagepacman -S s3scanner
DockerDocker releasedocker run ghcr.io/sa7mon/s3scanner
GoGolanggo install -v github.com/sa7mon/s3scanner@latest
Kali LinuxKali packageapt install s3scanner
MacOShomebrew versionbrew install s3scanner
Parrot OSParrot packageapt install s3scanner
Windows - wingetwinget install s3scanner
NixOS stablenixpkgs unstable packagenix-shell -p s3scanner
NixOS unstablenixpkgs unstable packagenix-shell -p s3scanner
その他 - ソースからビルドGitHub releasegit clone [email protected]:sa7mon/S3Scanner.git && cd S3Scanner && go build -o s3scanner .