
Goblobは、Azure BLOBに公開されている機密情報の発見を支援するために設計された軽量で高速な列挙ツールです。脆弱性評価、ペネトレーションテスト、偵察など、さまざまな調査目的に役立ちます。
警告: Goblobは、各ストレージアカウントでチェックするコンテナ名ごとに個別のgoroutineを発行し、-goroutinesフラグで指定された最大同時goroutine数によってのみ制限されます。この実装は、デフォルトのワードリストを使用するとほとんどの場合で帯域幅をすぐに枯渇させたり、クラウド環境でツールを使用している場合に多額の費用が発生する可能性があります。ツールを実行する前に、何をしているのかを理解してください。
go install github.com/Macmod/goblob@latest
goblobを使用するには、以下のコマンドを実行するだけです:
$ ./goblob <storageaccountname>
ここで、<storageaccountname>は、パブリックAzure BLOBストレージURLを列挙する対象のストレージアカウント名です。
チェックするストレージアカウント名のリストを指定することもできます:
$ ./goblob -accounts accounts.txt
デフォルトでは、ツールは一般的なAzure BLOBストレージコンテナ名のリストを使用して潜在的なURLを構築します。ただし、-containersオプションを使用してカスタムのコンテナ名リストを指定することもできます。例:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt
ツールはまた、-outputオプションを使用して結果をファイルに出力することもサポートしています:
$ ./goblob -accounts accounts.txt -containers wordlists/goblob-folder-names.txt -output results.txt
テストするアカウントをstdin経由で提供したい場合は、-accounts(またはアカウント名)を完全に省略することもできます:
$ cat accounts.txt | ./goblob
Goblobには、-containersオプションで使用できる基本的なワードリストがバンドルされています:
Goblobは、列挙プロセスを改善するために調整可能ないくつかのフラグを提供しています:
-goroutines=N - 許可する同時goroutineの最大数(デフォルト: 5000)-blobs=true - コンテナのURLではなく、各BLOBのURLを報告する(デフォルト: false)-verbose=N - 詳細レベルを設定(デフォルト: 1、最小: 0、最大: 3)-maxpages=N - BLOBを探すためにトラバースするコンテナページの最大数(デフォルト: 20、制限を無効にするには-1、BLOBのリストを完全に避けてコンテナがパブリックかどうかのみをチェックするには0)-timeout=N - HTTPリクエストのタイムアウト(秒、デフォルト: 90)-maxidleconns=N - HTTPクライアントのトランスポートパラメータ(デフォルト: )たとえば、ストレージアカウントとコンテナ名の大きなリストを使用してパブリックに公開されたコンテナだけを見つけたい場合は、-maxpages=0を使用してgoroutineが結果をページネーションするのを防ぐべきです。その後、見つけた結果のセットに対して-blobs=trueと-maxpages=-1を指定して再度実行し、実際にBLOBのURLを取得します。
一方、非常に人気のあるコンテナ名の小さなリストを多数のストレージアカウントに対してテストしたい場合は、-invertsearch=trueと-maxpages=0を試すとよいでしょう。これにより、各ストレージアカウントのコンテナ名ではなく、各コンテナ名のパブリックアカウントを確認できます。
また、帯域幅を最適に使用してより速く結果を見つけるために、-goroutines、-timeout、-maxidleconns、-maxidleconnsperhost、-maxconnsperhost、-skipsslを変更してみてもよいでしょう。
フラグを試して、自分に最適な設定を見つけてください ;-)
貢献は、issueを開くか、プルリクエストを送信することで歓迎します。
ツールを使用した実験で見つかった人気のコンテナ名の興味深い可視化:

私の実験とこのテーマ全般についてもっと知りたい場合は、私の記事をご覧ください:
MITライセンス (MIT)
Copyright (c) 2023 Artur Henrique Marzano Gonzaga
以下に定める条件に従い、本ソフトウェアおよび関連する文書ファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製、変更、結合、公開、配布、サブライセンス、および/または販売の権利、およびソフトウェアを提供された者にこれらを行うことを許可する権利が無制限に含まれます。
上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ソフトウェアは「現状のまま」で提供され、明示または黙示を問わず、商品性、特定目的への適合性、および非侵害の保証を含むがこれに限定されない、いかなる種類の保証もありません。いかなる場合も、著作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連して生じたいかなる請求、損害、その他の責任についても責任を負いません。
MaxIdleConns100-maxidleconnsperhost=N - HTTPクライアントのトランスポートパラメータMaxIdleConnsPerHost(デフォルト: 10)-maxconnsperhost=N - HTTPクライアントのトランスポートパラメータMaxConnsPerHost(デフォルト: 0)-skipssl=true - SSL検証をスキップ(デフォルト: false)-invertsearch=true - 各アカウントのコンテナではなく、各コンテナのアカウントを列挙する(デフォルト: false)