
WordPressセキュリティスキャナーで、脆弱性の検出、プラグイン・テーマ・ユーザーの列挙、弱いパスワードのチェックを行います。WPScan APIと統合し、リアルタイムの脆弱性データを提供します。
<p align="center">
<a href="https://wpscan.com/">
<img src="https://assets.kitploit.com/production/public/readmes/203/c3143aca4c894753cffdf1b314e19df72e588310fccde3db2d2e09dfbf4b2474.png" alt="WPScan ロゴ">
</a>
</p>
<h3 align="center">WPScan</h3>
<p align="center">
WordPress セキュリティスキャナ
<br>
<br>
<a href="https://wpscan.com/" title="ホームページ" target="_blank">WPScan WordPress 脆弱性データベース</a> - <a href="https://wordpress.org/plugins/wpscan/" title="WordPress セキュリティプラグイン" target="_blank">WordPress セキュリティプラグイン</a>
</p>
<p align="center">
<a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
<a href="https://hub.docker.com/r/wpscanteam/wpscan/" target="_blank"><img src="https://img.shields.io/docker/pulls/wpscanteam/wpscan.svg"></a>
<a href="https://github.com/wpscanteam/wpscan/actions?query=workflow%3ABuild" target="_blank"><img src="https://github.com/wpscanteam/wpscan/workflows/Build/badge.svg"></a>
<a href="https://qlty.sh/gh/wpscanteam/projects/wpscan" target="_blank"><img src="https://qlty.sh/gh/wpscanteam/projects/wpscan/maintainability.svg" alt="Maintainability"></a>
<a href="https://coveralls.io/github/wpscanteam/wpscan?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/wpscanteam/wpscan/badge.svg?branch=master" alt="Coverage Status"></a>
</p>
# インストール
## 前提条件
- (任意ですが強く推奨:[rbenv](https://github.com/rbenv/rbenv))
- Ruby >= 3.3 - 推奨:最新の安定版
- Curl >= 7.72 - 推奨:最新の安定版
- 7.29 にはセグメンテーションフォルトがあります
- 7.72 未満では、場合によっては `Stream error in the HTTP/2 framing layer` が発生する可能性があります
- RubyGems - 推奨:最新の安定版
- Nokogiri は OS によってはパッケージマネージャーでのパッケージのインストールが必要になる場合があります。https://nokogiri.org/tutorials/installing_nokogiri.html を参照してください
### ペネトレーションテスト用ディストリビューションの場合
ペネトレーションテスト用ディストリビューション(Kali Linux など)を使用する場合、利用可能であればパッケージマネージャー経由で wpscan をインストール/更新することを推奨します。
### macOSX で Homebrew を使用する場合
```shell
brew install wpscanteam/tap/wpscan
```
### RubyGems から
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](https://github.com/wpscanteam/wpscan/issues/1844) を参照)。
- **Debian / Ubuntu**:
```shell
sudo apt install build-essential ruby-dev
```
- **Fedora / RHEL / CentOS**:
```shell
sudo dnf install @development-tools ruby-devel
```
- **Arch Linux**:
```shell
sudo pacman -S base-devel ruby
```
- **Alpine**:
```shell
sudo apk add build-base ruby-dev
```
- **macOS**: Xcode Command Line Tools(`xcode-select --install`)をインストールします。
次に、gem をインストールします:
```shell
gem install wpscan
```
MacOSX で、Apple の System Integrity Protection(SIP)が原因で ```Gem::FilePermissionError``` が発生する場合、RVM をインストールして wpscan を再インストールするか、```sudo gem install -n /usr/local/bin wpscan``` を実行してください([#1286](https://github.com/wpscanteam/wpscan/issues/1286) を参照)。
# 更新
```wpscan --update``` を使用してローカルデータベースを更新できます。
WPScan 自体の更新は、WPScan が(事前)インストールされた方法に応じて、```gem update wpscan``` またはパッケージマネージャー(Kali Linux などのディストリビューションでは非常に重要です:```apt-get update && apt-get upgrade```)のいずれかで行います。
# Docker
```docker pull wpscanteam/wpscan``` でリポジトリを取得します。
ユーザー名の列挙
```shell
docker run -it --rm -v wpscan-db:/wpscan/.cache/wpscan/db wpscanteam/wpscan --url https://target.tld/ --enumerate u
```
ユーザー名の範囲の列挙
```shell
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日間の陳腐化プロンプトはローカルインストールの場合と同じように動作します:
```shell
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](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) に従います:
- **新規インストール**: `~/.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 パスに移行するには:
```shell
mv ~/.wpscan ~/.cache/wpscan
```
## オプション:WordPress 脆弱性データベース API
WPScan CLI ツールは [WordPress Vulnerability Database API](https://wpscan.com/api) を使用して、WordPress の脆弱性データをリアルタイムで取得します。WPScan が脆弱性データを取得するには、`--api-token` オプション、または後述する設定ファイルを介して API トークンを提供する必要があります。API トークンは [WPScan.com](https://wpscan.com/register) でアカウントを登録すると取得できます。
1日あたり最大 **25** 件の API リクエストが無料で提供されます。これは、ほとんどの WordPress ウェブサイトを少なくとも1日1回スキャンするのに十分です。1日の 25 件の API リクエストを使い切ると、WPScan は通常どおり動作を続けますが、脆弱性データは取得されません。
### API リクエストはいくつ必要ですか?
- 当社の WordPress スキャナは、WordPress バージョンに1件、インストール済みプラグインごとに1件、インストール済みテーマごとに1件の API リクエストを行います。
- 平均して、WordPress ウェブサイトには 22 個のプラグインがインストールされています。
## ファイルから CLI オプションを読み込む
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.yml`
- `pwd/.wpscan/scan.json`
- `pwd/.wpscan/scan.yml`
これらのファイルが存在する場合、`cli_options` キーのオプションが読み込まれ、2回見つかった場合は上書きされます。
例:
`~/.config/wpscan/scan.yml`:
```yml
cli_options:
proxy: 'http://127.0.0.1:8080'
verbose: true
```
`pwd/.wpscan/scan.yml`:
```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``` を実行することと同じです。
他のコマンドラインオプションは、スネークケースの規約を使用して追加できます。例:
```yml
cli_options:
user_agent: "Testing UA"
max_threads: 1
headers: "Custom-Header: aaaa; Another Header: bbb"
```
## API トークンをファイルに保存する
上記の機能は、API トークンを設定ファイルに保持し、毎回 CLI で指定する必要をなくすのに便利です。これを行うには、以下を含む ~/.config/wpscan/scan.yml ファイルを作成します:
```yml
cli_options:
api_token: 'YOUR_API_TOKEN'
```
## ENV から API トークンを読み込む(v3.7.10 以降)
API トークンは、ENV 変数 `WPSCAN_API_TOKEN` が存在する場合、そこから自動的に読み込まれます。`--api-token` CLI オプションも指定されている場合は、CLI の値が使用されます。
## API サービスのステータス
WPScan API との接続に問題が発生した場合は、https://status.wpscan.com/ でサービスのステータスを確認できます。API 接続エラーが発生すると、WPScan はエラーメッセージにステータスページへのリンクを含めます。
## ユーザー名の列挙
```shell
wpscan --url https://target.tld/ --enumerate u
```
ユーザー名の範囲の列挙
```shell
wpscan --url https://target.tld/ --enumerate u1-100
```
** u1-100 は任意の範囲に置き換えてください。
## バックアップフォルダの列挙
```shell
wpscan --url https://target.tld/ --enumerate bf
```
これにより、人気のある WordPress バックアッププラグインによって作成されたバックアップフォルダをチェックします。これらのフォルダには、データベースダンプ、設定ファイル、サイト全体のバックアップなどの機密データが含まれている可能性があります。
# ライセンス
## WPScan パブリックソースライセンス
WPScan ソフトウェア(以下「WPScan」と呼びます)はデュアルライセンスです - Copyright 2011-2019 WPScan Team。
WPScan の商用化を含むケースには、商用の非フリーライセンスが必要です。それ以外の場合、WPScan は以下の条件に従って無償で使用できます。
### 1. 定義
1.1「ライセンス」とは、この文書を意味します。
1.2「コントリビューター」とは、WPScan を作成、作成に貢献、または所有する各個人または法人を意味します。
1.3「WPScan Team」とは、WPScan の中核開発者を意味します。
### 2. 商用化
商用利用とは、商業上の優位性または金銭的報酬を目的とした利用です。
商用化の例は次のとおりです:
- WPScan を使用して商用のマネージド/サービスとしてのソフトウェア(SaaS)サービスを提供すること。
- WPScan を商用製品として、または商用製品の一部として配布すること。
- WPScan を付加価値サービス/製品として使用すること。
商用ライセンスを必要とせず、したがって以下の条件に該当する例には、次のものがあります(これらに限定されません):
- アセスメントツールキットの一部として WPScan を使用するペネトレーションテスター(またはペネトレーションテスト組織)。
- Kali Linux、SamuraiWTF、BackBox Linux を含む(これらに限定されない)ペネトレーションテスト用 Linux ディストリビューション。
- WPScan を使用して自身のシステムをテストすること。
- WPScan の非商用利用。
商用ライセンスの購入が必要な場合、または商用ライセンスの購入が必要かどうか不明な場合は、[email protected] までお問い合わせください。
無償利用の利用規約;
### 3. 再配布
再配布は以下の条件の下で許可されます:
- 変更されていないライセンスが WPScan に同梱されていること。
- 変更されていない著作権表示が WPScan に同梱されていること。
- 商用化条項と矛盾しないこと。
### 4. 複製
複製は、再配布条項と矛盾しない限り許可されます。
### 5. 変更
変更は、再配布条項と矛盾しない限り許可されます。
### 6. 貢献
いかなる貢献も、コントリビューターが WPScan Team に対して、コントリビューターのコンテンツを再利用、変更、再ライセンスする無制限かつ非独占的な権利を付与することを前提とします。
### 7. サポート、更新、およびメンテナンス
WPScan は現状有姿(AS-IS)ベースで提供され、サポート、更新、またはメンテナンスは一切ありません。サポート、更新、メンテナンスは、WPScan Team の独自の判断により提供される場合があります。
### 8. 保証の免責
WPScan は、明示、黙示、または法定を問わず、いかなる種類の保証もなく、本ライセンスの下で「現状のまま」提供されます。これには、WPScan に欠陥がないこと、商品性、特定目的への適合性、または非侵害性に関する保証が含まれますが、これらに限定されません。
### 9. 責任の制限
法律で許容される範囲で、WPScan は現状有姿(AS-IS)ベースで提供されます。WPScan Team は、WPScan の動作、障害、バグ、および/または WPScan とエンド機器、コンピュータ、その他のソフトウェア、またはいかなる第三者のエンド機器、コンピュータ、サービスとの間のその他のやり取りの結果として発生するいかなる損害、費用、経費、その他の支払いについても、いかなる制限なく責任を負いません。
### 10. 免責事項
事前の相互同意なしにウェブサイトに対して WPScan を実行することは、お住まいの国では違法となる可能性があります。WPScan Team は、WPScan によって引き起こされた誤用や損害について責任を負わず、一切の責任を負いません。
### 11. 商標
「wpscan」という用語は登録商標です。本ライセンスは、「wpscan」商標の使用または WPScan ロゴの使用を許諾するものではありません。