
WordPressセキュリティスキャナーで、脆弱性の検出、プラグイン・テーマ・ユーザーの列挙、弱いパスワードのチェックを行います。WPScan APIと統合し、リアルタイムの脆弱性データを提供します。
WordPress セキュリティスキャナ
WPScan WordPress 脆弱性データベース - WordPress セキュリティプラグイン
Stream error in the HTTP/2 framing layer が発生する可能性がありますペネトレーションテスト用ディストリビューション(Kali Linux など)を使用する場合、利用可能であればパッケージマネージャー経由で wpscan をインストール/更新することを推奨します。
brew install wpscanteam/tap/wpscan
WPScan はネイティブ拡張を伴う gem(例:yajl-ruby、nokogiri、ffi)に依存しているため、gem install wpscan を実行する前に、動作する C ツールチェーンと Ruby 開発用ヘッダーが存在している必要があります。これらがない場合、Failed to build gem native extension や make: x86_64-linux-gnu-gcc: No such file or directory のようなエラーでインストールは失敗します(#1844 を参照)。
sudo apt install build-essential ruby-dev
sudo dnf install @development-tools ruby-devel
sudo pacman -S base-devel ruby
sudo apk add build-base ruby-dev
xcode-select --install)をインストールします。次に、gem をインストールします:
gem install wpscan
MacOSX で、Apple の System Integrity Protection(SIP)が原因で Gem::FilePermissionError が発生する場合、RVM をインストールして wpscan を再インストールするか、sudo gem install -n /usr/local/bin wpscan を実行してください(#1286 を参照)。
wpscan --update を使用してローカルデータベースを更新できます。
WPScan 自体の更新は、WPScan が(事前)インストールされた方法に応じて、gem update wpscan またはパッケージマネージャー(Kali Linux などのディストリビューションでは非常に重要です:apt-get update && apt-get upgrade)のいずれかで行います。
docker pull wpscanteam/wpscan でリポジトリを取得します。
ユーザー名の列挙
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u
ユーザー名の範囲の列挙
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
** u1-100 は任意の範囲に置き換えてください。
このイメージには、ビルド時に焼き込まれたローカルデータベースのコピーが同梱されています。上記のコマンド例では --rm を使用しているため、実行中に行われたデータベースの更新はコンテナの終了時に破棄され、次の実行では(古くなっている可能性のある)焼き込まれたコピーから再度開始されます。
名前付きボリュームを /wpscan/.cache/wpscan/db(コンテナ内の wpscan ユーザーのキャッシュディレクトリ)にマウントすると、データベースが実行間で保持されるため、wpscan --update はチェックサムが実際に変更されたファイルのみを再ダウンロードし、5日間の陳腐化プロンプトはローカルインストールの場合と同じように動作します:
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --update
名前付きボリュームは、存在しない場合は最初の使用時に自動的に作成されます。
完全なユーザードキュメントはこちらにあります:https://github.com/wpscanteam/wpscan/wiki/WPScan-User-Documentation
wpscan --url blog.tld これにより、速度と精度のバランスが取れたデフォルトオプションでブログをスキャンします。バージョン検出、テーマ検出、興味深い発見の探索を実行します。プラグイン、テーマ、ユーザー、バックアップフォルダなどを列挙するには、-e オプションを使用します(例:すべてのプラグインは -e ap、脆弱なプラグインは -e vp、バックアップフォルダは -e bf)。
よりステルスなアプローチが必要な場合は、wpscan --stealthy --url blog.tld を使用できます。
したがって、--enumerate オプションを使用する場合は、デフォルトが 'passive' なので、--plugins-detection を適切に設定することを忘れないでください。
その他のオプションについては、ターミナルを開いて wpscan --help と入力してください(ソースから wpscan をビルドした場合は、git リポジトリの外でコマンドを入力してください)。
データベースの場所は XDG Base Directory Specification に従います:
~/.cache/wpscan/db(設定されている場合は $XDG_CACHE_HOME/wpscan/db)~/.wpscan/db(後方互換性のために維持されているレガシーパス)デフォルトの HTTP キャッシュや cookie jar などのランタイムファイルは、$TMPDIR が設定されている場合は $TMPDIR/wpscan の下に保存されます。それ以外の場合は、同じユーザーごとの XDG キャッシュディレクトリ(例:~/.cache/wpscan/cache や ~/.cache/wpscan/cookie_jar.txt)を使用します。これらのデフォルトは --cache-dir と --cookie-jar で上書きできます。
既存のインストールを XDG パスに移行するには:
mv ~/.wpscan ~/.cache/wpscan
WPScan CLI ツールは WordPress Vulnerability Database API を使用して、WordPress の脆弱性データをリアルタイムで取得します。WPScan が脆弱性データを取得するには、--api-token オプション、または後述する設定ファイルを介して API トークンを提供する必要があります。API トークンは WPScan.com でアカウントを登録すると取得できます。
1日あたり最大 25 件の API リクエストが無料で提供されます。これは、ほとんどの WordPress ウェブサイトを少なくとも1日1回スキャンするのに十分です。1日の 25 件の API リクエストを使い切ると、WPScan は通常どおり動作を続けますが、脆弱性データは取得されません。
WPScan はすべてのオプション(--url を含む)を設定ファイルから読み込むことができます。以下の場所がチェックされます(順序:最初から最後へ):
$XDG_CONFIG_HOME/wpscan/scan.json(XDG_CONFIG_HOME が設定されている場合)$XDG_CONFIG_HOME/wpscan/scan.yml(XDG_CONFIG_HOME が設定されている場合)~/.config/wpscan/scan.json(XDG_CONFIG_HOME が設定されていない場合)~/.config/wpscan/scan.yml(XDG_CONFIG_HOME が設定されていない場合)~/.wpscan/scan.json~/.wpscan/scan.ymlpwd/.wpscan/scan.jsonpwd/.wpscan/scan.ymlこれらのファイルが存在する場合、cli_options キーのオプションが読み込まれ、2回見つかった場合は上書きされます。
例:
~/.config/wpscan/scan.yml:
cli_options:
proxy: 'http://127.0.0.1:8080'
verbose: true
pwd/.wpscan/scan.yml:
cli_options:
proxy: 'socks5://127.0.0.1:9090'
url: 'http://target.tld'
カレントディレクトリ(pwd)で wpscan を実行することは、wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld を実行することと同じです。
他のコマンドラインオプションは、スネークケースの規約を使用して追加できます。例:
cli_options:
user_agent: "Testing UA"
max_threads: 1
headers: "Custom-Header: aaaa; Another Header: bbb"
上記の機能は、API トークンを設定ファイルに保持し、毎回 CLI で指定する必要をなくすのに便利です。これを行うには、以下を含む ~/.config/wpscan/scan.yml ファイルを作成します:
cli_options:
api_token: 'YOUR_API_TOKEN'
API トークンは、ENV 変数 WPSCAN_API_TOKEN が存在する場合、そこから自動的に読み込まれます。--api-token CLI オプションも指定されている場合は、CLI の値が使用されます。
WPScan API との接続に問題が発生した場合は、https://status.wpscan.com/ でサービスのステータスを確認できます。API 接続エラーが発生すると、WPScan はエラーメッセージにステータスページへのリンクを含めます。
wpscan --url https://target.tld/ --enumerate u
ユーザー名の範囲の列挙
wpscan --url https://target.tld/ --enumerate u1-100
** u1-100 は任意の範囲に置き換えてください。
wpscan --url https://target.tld/ --enumerate bf
これにより、人気のある WordPress バックアッププラグインによって作成されたバックアップフォルダをチェックします。これらのフォルダには、データベースダンプ、設定ファイル、サイト全体のバックアップなどの機密データが含まれている可能性があります。
WPScan ソフトウェア(以下「WPScan」と呼びます)はデュアルライセンスです - Copyright 2011-2019 WPScan Team。
WPScan の商用化を含むケースには、商用の非フリーライセンスが必要です。それ以外の場合、WPScan は以下の条件に従って無償で使用できます。
1.1「ライセンス」とは、この文書を意味します。
1.2「コントリビューター」とは、WPScan を作成、作成に貢献、または所有する各個人または法人を意味します。
1.3「WPScan Team」とは、WPScan の中核開発者を意味します。
商用利用とは、商業上の優位性または金銭的報酬を目的とした利用です。
商用化の例は次のとおりです:
商用ライセンスを必要とせず、したがって以下の条件に該当する例には、次のものがあります(これらに限定されません):
商用ライセンスの購入が必要な場合、または商用ライセンスの購入が必要かどうか不明な場合は、[email protected] までお問い合わせください。
無償利用の利用規約;
再配布は以下の条件の下で許可されます:
複製は、再配布条項と矛盾しない限り許可されます。
変更は、再配布条項と矛盾しない限り許可されます。
いかなる貢献も、コントリビューターが WPScan Team に対して、コントリビューターのコンテンツを再利用、変更、再ライセンスする無制限かつ非独占的な権利を付与することを前提とします。
WPScan は現状有姿(AS-IS)ベースで提供され、サポート、更新、またはメンテナンスは一切ありません。サポート、更新、メンテナンスは、WPScan Team の独自の判断により提供される場合があります。
WPScan は、明示、黙示、または法定を問わず、いかなる種類の保証もなく、本ライセンスの下で「現状のまま」提供されます。これには、WPScan に欠陥がないこと、商品性、特定目的への適合性、または非侵害性に関する保証が含まれますが、これらに限定されません。
法律で許容される範囲で、WPScan は現状有姿(AS-IS)ベースで提供されます。WPScan Team は、WPScan の動作、障害、バグ、および/または WPScan とエンド機器、コンピュータ、その他のソフトウェア、またはいかなる第三者のエンド機器、コンピュータ、サービスとの間のその他のやり取りの結果として発生するいかなる損害、費用、経費、その他の支払いについても、いかなる制限なく責任を負いません。
事前の相互同意なしにウェブサイトに対して WPScan を実行することは、お住まいの国では違法となる可能性があります。WPScan Team は、WPScan によって引き起こされた誤用や損害について責任を負わず、一切の責任を負いません。
「wpscan」という用語は登録商標です。本ライセンスは、「wpscan」商標の使用または WPScan ロゴの使用を許諾するものではありません。