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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
webstor — 組織のネットワーク全体のすべてのWebサイトをDNSゾーン転送とmasscanを使用して列挙し、レスポンスを保存し、既知の脆弱なWebテクノロジーやカスタム正規表現パターンに対するクエリを可能にします。 | Kitploit
ツール/GitHubGitHub/rossgeerlings/webstor
偵察脆弱性スキャナー情報収集ウェブセキュリティDNS分析
GitHubrossgeerlings/webstor

webstor

組織のネットワーク全体のすべてのWebサイトをDNSゾーン転送とmasscanを使用して列挙し、レスポンスを保存し、既知の脆弱なWebテクノロジーやカスタム正規表現パターンに対するクエリを可能にします。

リポジトリを見る
1582012年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

 

WebStor

組織内の脆弱なWebテクノロジーの迅速な識別

WebStorはMITライセンスの下でPythonで実装されたツールで、組織のすべてのネットワーク上のすべてのWebサイトを迅速に列挙し、それらのレスポンスを保存し、ゼロデイ脆弱性を持つものなど、既知のWebテクノロジーとバージョンを問い合わせるためのものです。特に、分散管理が行われている中規模から大規模の組織において、異なる部門やネットワークに分散した様々な管理者によって展開されたすべてのWebテクノロジーを追跡することがほぼ不可能であるという特有の問題を解決することを目的としています。

WebStorは以下のアクションを実行することで目標を達成します:

  1. DNSゾーン転送を実行して組織のAレコードとCNAMEレコードを収集します。
  2. Masscanを使用して、組織のネットワーク範囲、および組織のAレコードとCNAMEレコードに存在するそれらの範囲外のIPアドレスに対して、開いているHTTP/HTTPSポートをスキャンします。
  3. Python requestsライブラリを使用してすべてのレスポンスを収集し、MariaDBデータベースに保存します。開いているHTTP/HTTPSポートを持つIPに対応するすべてのDNS名は、IPアドレスに加えてリクエストに含まれるため、異なるヘッダーを使用するサイトが見逃されることはありません。
  4. Wappalyzer WebテクノロジーデータベースをダウンロードしてMariaDBデータベースに保存し、ユーザーが一般的なWebテクノロジーの場所を名前で問い合わせられるようにします。
  5. ユーザーが保存されたレスポンス内にカスタム正規表現が含まれる場所を問い合わせられるようにします。

サポートされているプラットフォーム

WebStorは現在Linuxシステム上で動作します。Pythonで書かれているため、Windows対応への変換は簡単であり、将来行われる可能性があります。

前提条件

アプリケーション

  • Masscan
    • cronジョブを使用してデータベースを更新する場合(一般的)、WebStorを介してMasscanスキャンを実行するユーザーに対してsudo nopasswdを設定することが重要です。
  • MariaDB 10.0.5以降
    • WebStorが試行するデフォルトの認証情報は、rootと空のパスワードです。データベースに接続するために他のユーザー名とパスワードを使用するようにWebStorを設定するには、[セキュアオプション]セクションを参照してください。

Pythonライブラリ

  • pip3 install dnspython
  • pip3 install beautifulsoup4
  • pip3 install mysql-connector-python
  • pip3 install js-regex
  • pip3 install gevent
  • pip3 install requests

PyPIからの入手

  • 単にWebStorを実行したいだけで編集しない場合は、前提条件のアプリケーションをインストールした後、'sudo pip3 install webstor'を使用してください。
  • PyPIを介してWebStorをインストールした後、webstorはパスに含まれ、作業ディレクトリに関係なく、'webstor.py'の代わりに'webstor'でコマンドラインから実行できます(例:'webstor -g')。

基本的な使用方法

root@kitploit:~
       webstor.py [-h] [--ADD-HTTP-PORT HTTPPORTTOADD] [--CLEAR-HTTP]
                  [--ADD-HTTPS-PORT HTTPSPORTTOADD] [--CLEAR-HTTPS]
                  [--ADD-CUSTOM-FINGERPRINT FINGERPRINT]
                  [--DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE]
                  [--IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE]
                  [--CLEAR-CUSTOM-FINGERPRINTS] [--SHOW-CONFIG]
                  [--SHOW-CONFIG-FULL] [--RUN-MASSCAN]
                  [--SET-MASSCAN-RANGES SETSCANRANGES]
                  [--ADD-RANGE RANGETOADD] [--DELETE-RANGE RANGETODELETE]
                  [--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES]
                  [--ADD-PATH PATHTOADD] [--DELETE-PATH PATHTODELETE]
                  [--CLEAR-PATHS] [--REFRESH-RESPONSES]
                  [--RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH]
                  [--SEARCH-PATTERN SEARCHPATTERN]
                  [--SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT]
                  [--SEARCH-WAPPALYZER SEARCHWAPPALYZER] [--NO-TSIG-KEY]
                  [--TSIG-KEY-IMPORT IMPORTTSIGFILE]
                  [--TSIG-KEY-REPLACE REPLACEMENTTSIGFILE]
                  [--DELETE-TSIG TSIGTODELETE]
                  [--USE-TSIG-FILE-ONLY USETSIGFILEONLY]
                  [--DOWNLOAD-NEW-WAPPALYZER] [--LIST-WAPPALYZER-TECH-NAMES]
                  [--ZONE-XFER] [--ADD-DOMAIN DOMAINDETAILS]
                  [--DELETE-DOMAIN DOMAINTODELETE]
                  [--IMPORT-ZONE-FILE IMPORTZONEFILE] [--CLEAR-DOMAINS]
                  [--LIST-DOMAINS] [--LIST-OUTSIDE] [--SQL-CREDS SQLCREDSFILE]

optional arguments:
  -h, --help            このヘルプメッセージを表示して終了します
  --ADD-HTTP-PORT HTTPPORTTOADD, -a HTTPPORTTOADD
                        カスタムHTTPポートを追加します
  --CLEAR-HTTP, -aC     カスタムHTTPポートをクリアし、デフォルトの80に戻します
  --ADD-HTTPS-PORT HTTPSPORTTOADD, -b HTTPSPORTTOADD
                        カスタムHTTPSポートを追加します
  --CLEAR-HTTPS, -bC    カスタムHTTPSポートをクリアし、デフォルトの443に戻します
  --ADD-CUSTOM-FINGERPRINT FINGERPRINT, -c FINGERPRINT
                        <名前>,<正規表現>の形式でカスタムフィンガープリントを追加します
  --DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE, -cD FINGERPRINTNAMETODELETE
                        名前でカスタムフィンガープリントを削除します
  --IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE, -cI IMPORTFINGERPRINTFILE
                        指定されたパスのカスタムフィンガープリントファイルをインポートします
  --CLEAR-CUSTOM-FINGERPRINTS, -cC
                        DBに保存されているすべてのカスタムフィンガープリントをクリアします
  --SHOW-CONFIG, -g     現在のWebStor設定を表示します(簡易)
  --SHOW-CONFIG-FULL, -gF
                        現在のWebStor設定を表示します(詳細)
  --RUN-MASSCAN, -m     設定されたすべてのHTTPおよびHTTPSのTCPポートに対して、設定されたすべての範囲と、DNSレコードからのIPアドレスで範囲外のものに対して、Masscanを使用して新しいポートスキャンを実行します
  --SET-MASSCAN-RANGES SETSCANRANGES, -mR SETSCANRANGES
                        スキャン範囲を設定します。既存の範囲を置き換え、カンマ区切りで指定します(例:-s 10.10.0.0/16,10.13.0.0/16,192.168.1.0/24)
  --IMPORT-MASSCAN-RANGES IMPORTSCANRANGES, -mI IMPORTSCANRANGES
                        指定されたファイルからスキャン範囲(CIDRブロック)をインポートします
  --DELETE-RANGE RANGETODELETE, -mD RANGETODELETE
                        スキャン範囲を削除します
  --ADD-PATH PATHTOADD, -p PATHTOADD
                        '/'以外にレスポンスを要求・保存するパスを追加します
  --DELETE-PATH PATHTODELETE, -pD PATHTODELETE
                        '/'以外にレスポンスを要求・保存するパスを削除します
  --CLEAR-PATHS, -pC    カスタムURLリクエストパスをクリアし、デフォルトの'/'に戻します
  --REFRESH-RESPONSES, -r
                        DB内のURLレスポンスを更新します
  --RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH, -rP RESPONSESADDFORPATH
                        現在のDB内のレスポンスとともに、1回限りのパスに対するURLレスポンスを追加します
  --SEARCH-PATTERN SEARCHPATTERN, -sP SEARCHPATTERN
                        WebStorデータベースで文字列または正規表現を検索します
  --SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT, -sC SEARCHFINGERPRINT
                        ユーザー提供のカスタムフィンガープリントの名前でテクノロジーを検索します
  --SEARCH-WAPPALYZER SEARCHWAPPALYZER, -sW SEARCHWAPPALYZER
                        Wappalyzer Tech DBからのテクノロジー名でWebStor DBを検索します
  --NO-TSIG-KEY, -tN    データベースまたはファイルに保存されているDNSSec TSIGキーを使用しない(存在する場合でも)
  --TSIG-KEY-IMPORT IMPORTTSIGFILE, -tI IMPORTTSIGFILE
                        指定されたTSIGキーファイルをデータベースにインポートします
  --TSIG-KEY-REPLACE REPLACEMENTTSIGFILE, -tR REPLACEMENTTSIGFILE
                        データベース内のTSIGキーを指定されたファイルで置き換えます
  --DELETE-TSIG TSIGTODELETE, -dT TSIGTODELETE
                        名前でデータベースからTSIGキーを削除します
  --USE-TSIG-FILE-ONLY USETSIGFILEONLY, -tF USETSIGFILEONLY
                        指定されたTSIGファイルのみを使用します(フルパス)。DBに保存されたTSIGは使用しません。すべてのドメインに適用され、現在の実行ではWebStorがゾーン転送に1つのTSIGのみを使用するように制限します
  --DOWNLOAD-NEW-WAPPALYZER, -w
                        GitHubから新しいWappalyzerフィンガープリントファイルを直接ダウンロードします。既存のWappalyzerフィンガープリントデータを上書きします
  --LIST-WAPPALYZER-TECH-NAMES, -wL
                        データベース内のすべてのWappalyzerテクノロジーの名前を一覧表示します
  --ZONE-XFER, -z       DB内のすべてのドメイン、サーバー、および関連するTSIGキーを使用して新しいゾーン転送を強制します
  --ADD-DOMAIN DOMAINDETAILS, -zA DOMAINDETAILS
                        <ドメイン名>,<サーバー>,<TSIGキー名>の形式でドメインを追加します
  --DELETE-DOMAIN DOMAINTODELETE, -zD DOMAINTODELETE
                        名前でデータベースからDNSドメインを削除します
  --IMPORT-ZONE-FILE IMPORTZONEFILE, -zI IMPORTZONEFILE
                        ファイルからゾーン転送用のドメインを追加します
  --CLEAR-DOMAINS, -zC  DBに保存されているすべてのDNSドメインをクリアします
  --LIST-DOMAINS, -zL   DBに保存されているすべてのDNSドメインを一覧表示します
  --LIST-OUTSIDE, -e    定義されたネットワーク範囲外にあるゾーン転送からのすべての名前とIPのリストを表示します
  --SQL-CREDS SQLCREDSFILE, -q SQLCREDSFILE
                        指定されたパスのファイル内のSQL認証情報を使用します

WebStorを初期設定しデータベースを投入する手順:

注意:これらの手順は、組織がゾーン転送に1つのTSIGキーのみを使用し、すべてのレコードが1つのDNSサーバーからクエリできることを前提としています。そうでない場合は、以下の「セキュア/特殊な使用例」セクションを参照してください。

  1. ゾーン転送を実行できるTSIGキーファイルを入手し、作業ディレクトリに配置します。
  2. 組織のすべてのネットワーク範囲(CIDR表記)の改行区切りリストファイルを入手します。広大なプライベートRFC1918スペース、特に10.Xスペースを使用している場合、10.0.0.0/8を単純に追加しないでください。後でMasscanが非常に長い時間を要する原因になります。代わりに、実際に割り当てられている複数の小さなブロック(例:10.10.3.0/24)を使用してください。本稿執筆時点の一般的な企業または大学ネットワークでは、WebStorの現在のスロットル設定では、スキャンされる100万IPアドレスごとに約15分かかると予想されます。
  3. ゾーン転送を実行するドメイン名を含むテキストファイルを作成します。ファイルの先頭に2行を挿入します。1行目はTSIGキーの名前(不明な場合は、TSIGファイルの最初の行の"key"の直後にあります)、2行目はDNSサーバーの名前またはIPアドレスです。残りのファイルには、組織のすべてのDNSドメイン名を1行につき1つずつ記述します。典型的な大規模大学の場合、engineering.stateu.edu などの名前になります。
  4. ./webstor.py -g を実行して設定を表示し、データベース機能を確認します。
  5. ./webstor.py -tI <tsig file> -mI <net ranges file> -zI <domains file> を実行します。 注意:このプロセスのTSIGインポート部分では、TSIGに関連付けるドメインと、そのTSIGのターゲットとなるDNSサーバーを尋ねられます。これはTSIGファイル自体にこの情報が含まれていないためです。単にドメインの1つ(例:stateu.edu)とDNSサーバーのIPアドレスを指定してください。後で処理されるドメインインポートファイルの情報がドメインの関連付けを上書きします。
  6. WebStorがデータ収集の準備が整いました。./webstor.py -z -m -r -w を実行します。これにより、ゾーン転送を介してDNSレコードを収集し、Masscanで開いているWebポートをスキャンし、開いているWebポートを持つすべてのホスト(ネットワーク範囲内および範囲外のDNSレコードを持つホストのスーパーセット)に対してHTTP/HTTPSリクエストを実行し、レスポンスをデータベースに保存します。-wオプションは、Wappalyzer Web Technologiesデータベースの最新コピーをGitHubからダウンロードします。

使用例

root@kitploit:~
# Webテクノロジーに関連する文字列/正規表現を検索:
./webstor.py -sP "content=\"wordpress 4.[7-9]"
# この正規表現に一致するサイトのリスト(Wordpress v4.7-9サイトからの予想されるレスポンス)が返されます。

# 上記の例の正規表現を、名前でクエリできるカスタムフィンガープリントとして保存する場合(毎回正規表現を覚えておく必要はありません):
./webstor.py -c "wordpress4.7-9,content=\"wordpress 4.[7-9]"

# 上記のコマンドを実行した後、次のように簡単にクエリを実行できます:
./webstor.py -sC wordpress4.7-9

# Wappalyzer定義を使用してWordpressサイトを検索する場合:
./webstor.py -sW wordpress
# 組織のネットワーク上で到達可能なWordpressサイトのリストが返されます。注意:Wappalyzer検索は、検証するプロパティの数が多いため、パターン/正規表現検索よりも遅くなる可能性があります。

名前とIPで表示される結果

サイトは名前とIPアドレスの両方に対するレスポンスに基づいてクエリされます。これは、一部のWebサーバーが複数の名前で複数のサイトをホストしているため重要です。他のサーバーは、IPでリクエストされた場合(例:https://68.66.216.42)にデフォルトサイトまたはホスティングプロバイダーのデフォルトレスポンスのみを提供し、名前でクエリされた場合(例:https://www.seekerdlp.com)に実際の業務用サイトを提供する場合があります。このため、名前付きサイトがあり、それがWebサーバーのIPがリクエストされたときにも提供される場合、両方のクエリ結果が表示されます。

結果を最新に保つ

クエリ結果が常にネットワークの現在の状態を反映するように、cronジョブを設定してWebStorを毎日実行することをお勧めします。

セキュアオプション

デフォルトのMariaDB認証情報(root、空のパスワード)を使用したくない場合は、-qオプションを使用して認証情報を含むファイルのパスを指定できます。ファイルの1行目はサーバー(例:localhost)、2行目はSQLユーザー名、3行目はパスワードである必要があります。

TSIGキーをデータベースに保存したくない場合は、-tFオプションを使用してACLが適用されたTSIGキーファイルのパスを指定できます。

組織が複数のTSIGキーを使用する場合は、それらをデータベースに保存する必要があります。それぞれ-tIオプションで追加でき、ドメインは通常のオプションを通じて、適切なキーとサーバーを指定して追加できます。

帰属

WebStorは、事前に設定された名前インデックス付きテクノロジールックアップをWebStorの保存されたレスポンスに対して行うために、Wappalyzerのテクノロジーデータベースを使用しています。WappalyzerはMITライセンスの条件の下でライセンスされています。

特別な感謝

  • Brandon Bailey <Twitter: @ge0stigm4>(元のコンセプトの共同設計者)
  • Bob Harold(DNSに関するガイダンス)
  • Neamen Negash <nnegash@umich.edu>(インストーラ)
  • afreudenreich(複数のバグ修正と機能強化)

ライセンスと著者

WebStorはRoss Geerlings <rjgeer@umich.edu>, <ross@seekerdlp.com>によって作成されました。

WebStorはMITライセンスの条件の下でライセンスされています。以下にその条件を再掲します。

The MIT License

Copyright (c) 2020-2024 The University of Michigan Board of Regents.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation fime-les (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

ツールをダウンロード