
非同期WordPressセキュリティスキャナーで、ヘッドレスブラウザによるWAF回避機能を備えています。プラグイン、テーマ、ユーザー、マルチサイトインストールを列挙し、ステルスフィンガープリンティングとWPScan脆弱性統合を備えています。
█ █░ ██▓███ ▒██ ██▒ ██▀███ ▄▄▄ ▓██ ██▓
▓█░ █ ░█░▓██░ ██▒ ▒▒ █ █ ▒░▓██ ▒ ██▒▒████▄ ▒██ ██▒
▒█░ █ ░█ ▓██░ ██▓▒ ░░ █ ░▓██ ░▄█ ▒▒██ ▀█▄ ▒██ ██░
░█░ █ ░█ ▒██▄█▓▒ ▒ ░ █ █ ▒ ▒██▀▀█▄ ░██▄▄▄▄██ ░ ▐██▓░
░░██▒██▓ ▒██▒ ░ ░ ▒██▒ ▒██▒░██▓ ▒██▒ ▓█ ▓██▒ ░ ██▒▓░
░ ▓░▒ ▒ ▒▓▒░ ░ ░ ▒▒ ░ ░▓ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ██▒▒▒
▒ ░ ░ ░▒ ░ ░░ ░▒ ░ ░▒ ░ ▒░ ▒ ▒▒ ░▓██ ░▒░
░ ░ ░░ ░ ░ ░░ ░ ░ ▒ ▒ ▒ ░░
░ ░ ░ ░ ░ ░░ ░
░ ░
WPX — WordPress X-Ray スキャナー | WAF バイパス
WPX (WordPress X-Ray) は、Camoufox を使用して Cloudflare および WAF のチャレンジを解決するセキュリティスキャナーです。それらのセッションをミラーリングして、高速な非同期でのプラグインとテーマの発見、ユーザー列挙、マルチサイト検出を実行します。
**注**: WPX は、必要なスキャンメタデータ(フィンガープリント、検出ルール)を `data.wpscan.org` からダウンロードします。
## 特徴
* **WAF バイパス**: Camoufox ヘッドレスブラウザを使用してチャレンジを解決し、セッショントークンを抽出します。
* **非同期スキャン**: `asyncio` と `curl_cffi` で構築され、高速な列挙を実現します。
* **フィンガープリンティング**: ブラウザのフィンガープリントと TLS ハンドシェイクを模倣して検出を回避します。
* **ユーザー列挙**: REST API、著者アーカイブ、oEmbed、RSS フィードを介して WordPress ユーザー名を発見します。
* **マルチサイト検出**: WordPress マルチサイト/ネットワークインストールを識別します。
* **WPScan API**: WPScan 脆弱性データベースと統合して脆弱性を検索します。
* **大規模プラグインカタログ**: 約 110,000 の過去のプラグインと約 55,000 の現在のプラグインを追跡します。
* **プラグインカタログ作成**: WordPress.org からプラグインスラッグを取得しランク付けするスクリプトが含まれています。
* **CLI 出力**: `wpscan` に似た構造化された端末出力。
* **ステルスモード**: 高忠実度のブラウザなりすましと TLS セッションミラーリング。
## Docker
WPX を実行する最も簡単な方法 — Python や依存関係は不要です。
### プルして実行
```bash
docker run ghcr.io/greg-randall/wpx -u https://example.com
docker run -v $(pwd):/output ghcr.io/greg-randall/wpx -u https://example.com -o /output/results.txt
ボリュームがない場合、WPX は実行ごとにメタデータを再ダウンロードします。名前付きボリュームをマウントしてこれを回避します:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx -u https://example.com
必要に応じて手動でメタデータを更新:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx --update
git clone https://github.com/greg-randall/wpx.git
cd wpx
pip install .
python3 -m camoufox fetch
python3 wpx.py -u https://example.com
python3 wpx.py -u https://example.com --api-key YOUR_API_KEY
上位ランクのプラグインを特定の数だけスキャン(例:上位 500):
python3 wpx.py -u https://example.com --plugins-limit 500
これまでに作成されたすべてのプラグインをスキャンします。WPX は約 110,000 のプラグイン(現在アクティブな約 55,000 を含む)の全履歴ライブラリを走査し、ターゲット上のソフトウェアの痕跡をすべて見つけます。 警告: これは膨大な数のリクエストを実行し、スレッド数とターゲットの応答性によっては完了までに数時間かかる可能性があります。
python3 wpx.py -u https://example.com --full-scan
ユーザー列挙は自動的に実行されます。著者 ID のプローブ範囲を制限するか、完全に無効にするには:
python3 wpx.py -u https://example.com --users-limit 20
python3 wpx.py -u https://example.com --enum-users-disable
スキャンをサイレントで実行し、ANSI カラーコードなしで結果をファイルに保存:
python3 wpx.py -u https://example.com --quiet --output results.txt
プラグインリストを更新し、人気順にランク付けするには:
python3 data/wpx_fetch_plugins.py --sort-by score
出力は data/plugins_active.txt(デフォルト上位 5000)と data/plugins_dead.txt(デフォルト上位 2500)です。
制限を変更するには:
python3 data/wpx_fetch_plugins.py --active-limit 10000 --dead-limit 5000
data/ ディレクトリには、処理済みのプラグインデータセットとメンテナンスツールが含まれています:
data/plugins_active.txt: 人気スコア(インストール数×ダウンロード数の幾何平均)でランク付けされたアクティブなプラグインスラッグ。data/plugins_dead.txt: 過去のインストール数(以前のカタログ実行または Archive.org のスナップショットから取得)でランク付けされた、閉鎖/削除されたプラグインのスラッグ。data/plugins_catalog.json: アクティブなプラグインのキャッシュされたメタデータ。data/plugins_dead.jsonl: 最後に確認されたインストール数を含む、削除されたプラグインメタデータの追記専用キャッシュ。新しいエントリはロード時に古いものを上書きします(最後書き込み優先)。data/archive.org-cache/: Wayback Machine からの生の HTML スナップショット。最初のカタログ実行より前に閉鎖されたプラグインの過去のインストール数を復元するために使用されます。data/wpx_fetch_plugins.py: WordPress.org API、SVN リポジトリ、Archive.org を組み合わせてプラグインリストを構築および拡充するフェッチャー。wpx.py)data/wpx_fetch_plugins.py)このツールは許可されたセキュリティテスト専用です。開発者は誤用や損害について責任を負いません。
| フラグ | 説明 |
|---|
-u, --url | 対象の WordPress URL(必須)。 |
--api-key | WPScan 脆弱性データベース API キー。 |
-t, --threads | スキャンの同時スレッド数(デフォルト: 20)。 |
--plugins-limit | スキャンするプラグインの数を制限(例: 500, 5000)。 |
--full-scan | 利用可能なすべてのプラグインスラッグをスキャン(最大 5 万以上)。 |
--update | WPScan メタデータファイルを強制的に更新。 |
--no-browser | Camoufox WAF バイパスをスキップして直接接続。 |
--enum-users-disable | ユーザー列挙をスキップ。 |
--users-limit N | ?author=N でプローブする著者 ID の数(デフォルト: 10)。 |
--stealth [N] | リクエスト間にランダムな遅延を追加。最小 1 秒、最大 2×N 秒(フラグ設定時のデフォルト: 1.5 → 1~3 秒)。またスレッドを 3 に制限。 |
--idle-timeout N | N 秒間サーバー応答がない場合に中断(デフォルト: 60、0 = 無効)。 |
-q, --quiet | バナー、ステータス、進捗を非表示 — 結果のみ表示。 |
-o, --output FILE | 出力をファイルに書き込み(プレーンテキスト、ANSI コードなし)。 |
| フラグ | 説明 |
|---|
--sort-by | アクティブなプラグインのランク付け方法: score(デフォルト)、active_installs、downloaded。 |
--active-limit N | plugins_active.txt に書き込むアクティブスラッグの数(デフォルト: 5000、0 = すべて)。 |
--dead-limit N | plugins_dead.txt に書き込むデッドスラッグの数(デフォルト: 2500、0 = すべて)。 |
--force | カタログが既に存在する場合でもすべて再取得。 |
--fetch-limit N | API から N 個のアクティブプラグインを取得したら停止(0 = すべて)。 |
--max-age HOURS | カタログが N 時間より新しい場合、API 取得をスキップ(デフォルト: 24)。 |