
wp2shell-Hestia-Scanner — Updated!
HestiaCPサーバー向けの読み取り専用WordPressセキュリティスキャナです。ホストされているすべてのサイトでwp2shell侵害の痕跡(CVE-2026-63030 / CVE-2026-60137)を検出し、ユーザーごとのメールレポート、クリーンなWordPressとのコアファイル差分、PHP/JS/htaccess/画像分析、Claude APIによるオプションのAI評価を提供します。
🛡️ wp2shell-Hestia-Scanner
HestiaCP サーバー向けの読み取り専用 WordPress セキュリティスキャナー。
ホストされているすべてのサイトで wp2shell の侵害インジケーターを検出します — クライアント別メールレポート、コアファイル差分、SHA256 ウェブシェル検出、リスクスコアリング、オプションの AI 評価に対応。
⚠️ 安全なバージョン: WordPress 6.8.6 / 6.9.5 / 7.0.2 以降。
これらのスクリプトは何も変更しません — 全体を通して読み取り専用です。
🇬🇧 英語
wp2shell とは?
wp2shell は、2026年7月17日に公開された WordPress コアの認証前リモートコード実行 (RCE) チェーンです。デフォルトインストールに対する単一の匿名 HTTP リクエストだけで、不正な管理者を作成し、サーバー上で任意のコードを実行できます。
このチェーンは以下を組み合わせます:
- CVE-2026-60137 —
WP_Queryのauthor__not_inパラメータにおける SQL インジェクション - CVE-2026-63030 — REST API
/wp-json/batch/v1エンドポイントにおけるルート混乱
侵害されたサイトには、ログインプレフィックス wp2_ とメールアドレス @wp2shell.invalid を持つ不正な管理者が存在します。
詳細情報: https://wp2shell.com
リポジトリの内容
| ファイル | 目的 |
|---|---|
wp2shell-scan.sh | 高速なサーバー全体 IoC スキャナー — 色分けされたターミナル出力、サイトごとのリスクスコア、/root/ への自動保存レポート |
wp2shell-report-per-user.sh | フルスキャナー — HestiaCP ユーザーごとのメールレポート、コアファイル差分、SHA256 ウェブシェル検出、AI 評価、リスクスコアリング |
known_shells.sha256 | 既知のウェブシェルハッシュデータベース (SHA256) — 実行時に自動取得 |
スキャナーのチェック内容
データベース / ユーザーチェック
| チェック | 重大度 |
|---|---|
| WordPress バージョン vs. 安全なバージョン | HIGH / OK |
wp2_ プレフィックスまたは @wp2shell.invalid メールアドレスを持つアカウント | CRITICAL |
| 公開日 (2026年7月15日) 以降に作成された管理者 | MEDIUM |
| ユーザー ID シーケンスの欠番 (削除された不正な管理者の痕跡) | MEDIUM |
孤立した wp_usermeta 行 | MEDIUM |
汚染された oembed_cache / customize_changeset 行 | CRITICAL |
改ざんされた WP オプション (upload_path、auto_prepend_file、siteurl) | CRITICAL / HIGH |
コアファイルの整合性
| チェック | 重大度 |
|---|---|
wp core verify-checksums vs. wp.org | HIGH |
ダウンロードしたクリーンなコアに対する行単位の diff -U5 | CRITICAL / HIGH / OK |
| クリーンなコアに存在しない追加ファイル (内容 + メタデータを表示) | CRITICAL / HIGH |
ファイル分析
| チェック | 重大度 |
|---|---|
uploads/ 内の PHP | CRITICAL |
追加の PHP 拡張子 (.php7 .phtml .phar .php5) | HIGH |
| 既知のウェブシェルデータベースとの SHA256 一致 (WSO、FilesMan、b374k、p0wny…) | CRITICAL |
SINCE_DATE 以降に変更され、かつ疑わしいパターンに一致する PHP — 一致した行をインライン表示 | CRITICAL / HIGH |
| 疑わしいパターンを含むが最近変更されていない PHP | LOW |
SINCE_DATE 以降に変更され、難読化パターンに一致する JS/HTML | MEDIUM |
| 外部 C2 / データ外部送信 URL (pastebin、ngrok、Discord webhooks、bit.ly…) | CRITICAL |
.htaccess の危険なディレクティブ (AddType、auto_prepend_file、外部 RewriteRule) | HIGH |
SINCE_DATE 以降に変更された .htaccess | MEDIUM |
PHP ペイロードを含むポリグロット画像 (.jpg/.png 内の <?php など) | CRITICAL |
露出したバックアップ/設定ファイル (wp-config.php.bak、*.sql など) | MEDIUM |
永続化
| チェック | 重大度 |
|---|---|
curl/wget/php/base64 を含むユーザー crontab エントリ | HIGH |
| サイトパスを参照するシステム cron ファイル | MEDIUM |
リスクスコア
各サイトには、すべての検出項目の内訳付きで 0–100 のリスクスコアが付与されます:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| スコア | ラベル |
|---|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 | High Risk |
| 81+ | COMPROMISED |
要件
- HestiaCP を実行している Linux サーバー
- bash 4.0+
- WP-CLI がグローバルに
wpとしてインストールされていること rootアクセスsendmail(メールレポート用)python3(AI 評価の JSON 処理用)curl、sha256sum、file、strings、unzip
WP-CLI のインストール (未インストールの場合)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
ワンライナーでのインストール & 実行
高速 IoC スキャン
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
クライアント別メールレポート付きフルスキャン
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
注: フルスキャナーは起動時にインタラクティブな質問を行います (AI 評価、レポート保存、日付しきい値)。最初にダウンロードしてから実行すると、プロンプトが正しく動作します。
使用方法
wp2shell-scan.sh — 高速なサーバー全体スキャン
sudo bash wp2shell-scan.sh
/home/*/web/*/public_html/ 配下のすべての WordPress インストールを検出し、すべてのチェックを実行して、色分けされた出力をターミナルに表示し、完全なレポートを /root/wp2shell-report-YYYYMMDD-HHMMSS.txt に保存します。
起動時に、オプションのカスタム日付しきい値 (デフォルト: 2026-07-15) を尋ねます。
wp2shell-report-per-user.sh — メールレポート付きフルスキャン
sudo bash wp2shell-report-per-user.sh
起動時に 3 つの質問が表示されます:
[AI EVALUATION] Use AI evaluation for ambiguous files? [y/N]
[SAVE REPORT] Save a full report file for later review? [y/N]
[DATE THRESHOLD] Use a different date? Leave blank to keep default [YYYY-MM-DD]:
必ず DRY_RUN=1 (デフォルト) から開始してください — メールは画面にプレビュー表示されるだけで、何も送信されません。出力が正しいことを確認した後にのみ DRY_RUN=0 に変更してください。
設定
wp2shell-scan.sh
| 変数 | デフォルト | 説明 |
|---|---|---|
WEB_ROOT | /home | HestiaCP の Web ルート |
SINCE_DATE | 2026-07-15 | 「最近変更された」と判定するしきい値 |
WP | wp | WP-CLI へのパス |
wp2shell-report-per-user.sh
| 変数 | デフォルト | 説明 |
|---|---|---|
DRY_RUN | 1 | 1 = プレビューのみ、0 = メール送信 |
SEND_ONLY_IF_ISSUES | 0 | 1 = サイトがクリーンな場合はメールをスキップ |
SINCE_DATE | 2026-07-15 | 「最近変更された」と判定するしきい値 |
MAIL_FROM | security@<hostname> | エンベロープ送信者 |
CORE_CACHE | /root/wp2shell-cores | クリーンなコアのキャッシュディレクトリ |
ANTHROPIC_API_KEY | (空) | AI 評価用の Claude API キー |
AI 評価 (オプション)
パターンだけでは分類できない曖昧な差分について、スキャナーは差分を Claude API (claude-sonnet-4-6) に送信し、DANGER、SUSPICIOUS、REVIEW、または OK の判定を一文の説明付きで返します。AI はグレーゾーンの場合のみ使用されます — 明確なケースは API 呼び出しなしで即座に分類されます。
スクリプト内にキーを設定するか、実行前にエクスポートしてください:
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
API キー: https://console.anthropic.com — claude.ai のサブスクリプションとは別です。
API キーがない場合?ブラウザアナライザーを使用
スキャン出力を Claude.ai の wp2shell Report Analyzer アーティファクトに貼り付けてください — 独自のキーを必要とせず、同じ AI 評価をブラウザ上で直接実行できます。
出力形式
重大度レベル
| ラベル | 色 | 意味 |
|---|---|---|
[CRITICAL] | 🔴 太字の赤 | 進行中の侵害インジケーター — 直ちに対処 |
[HIGH] | 🔴 赤 | 強いインジケーター — 緊急に調査 |
[MEDIUM] | 🟡 黄 | 疑わしい — 調査が必要 |
[LOW] | 🔵 青 | 優先度低 — おそらく誤検知 |
[INFO] | ⚫ グレー | 参考情報 |
[OK] | 🟢 緑 | クリーン / 期待どおり |
コア差分の例
┌─ MODIFIED: wp-includes/load.php
│ [CRITICAL] Assessment (patterns): executable/obfuscated pattern in added lines
│ +20 Core file modified with dangerous pattern
│
│ ORIGINAL: /root/wp2shell-cores/7.0.2-el/wp-includes/load.php
│ SITE: /home/user/web/example.gr/public_html/wp-includes/load.php
│ @@ -212,5 +212,6 @@
│ - $loaded = true;
│ + $loaded = true;
│ + eval(base64_decode('aGVsbG8='));
└──────────────────────────────────────
注意事項
- スキャナーは何も変更しません。本番稼働中のサーバーで実行しても安全です。
- WordPress をパッチ適用済みバージョンに更新すると脆弱性は解消されますが、すでに侵害されたサイトはクリーンアップされません。インジケーターが見つかった場合は、クリーンなバックアップから復元してください。
CORE_CACHEディレクトリ (/root/wp2shell-cores/) はスキャン間で再利用されます。削除すると、新しいダウンロードが強制されます。known_shells.sha256ハッシュデータベースは 1 日 1 回自動的に更新されます。
ライセンス
GPL-3.0 — LICENSE を参照
クレジット
wp2shell の公開 (2026年7月) を受けて BytesPulse によって開発されました。
CVE 情報: https://wp2shell.com
🇬🇷 ギリシャ語
wp2shell とは?
wp2shell は、2026年7月17日に公開された WordPress コアのリモートコード実行 (RCE) チェーンです。デフォルトインストールに対する単一の匿名 HTTP リクエストだけで、管理者を作成し、サーバー上で任意のコードを実行できます。
このチェーンは以下を組み合わせます:
- CVE-2026-60137 —
WP_Queryのauthor__not_inパラメータにおける SQL インジェクション - CVE-2026-63030 — REST API
/wp-json/batch/v1におけるルート混乱
侵害されたサイトには、プレフィックス wp2_ とメールアドレス @wp2shell.invalid を持つ管理者アカウントが存在します。
詳細情報: https://wp2shell.com
リポジトリの内容
| ファイル | 目的 |
|---|---|
wp2shell-scan.sh | 高速なサーバー全体 IoC スキャナー — 色分けされたターミナル出力、サイトごとのリスクスコア、/root/ へのレポート自動保存 |
wp2shell-report-per-user.sh | フルスキャナー — HestiaCP ユーザーごとのメールレポート、コア差分、SHA256 ウェブシェル検出、AI 評価、リスクスコア |
known_shells.sha256 | 既知のウェブシェルの SHA256 データベース — 実行時に自動ダウンロード |
チェック内容
データベース / ユーザー
| チェック | 重大度 |
|---|---|
| WordPress バージョン vs. 安全なバージョン | HIGH / OK |
wp2_ プレフィックスまたは @wp2shell.invalid メールアドレスのアカウント | CRITICAL |
| 公開日 (2026年7月15日) 以降に作成された管理者 | MEDIUM |
| ユーザー ID シーケンスの欠番 (削除された不正な管理者の痕跡) | MEDIUM |
孤立した wp_usermeta 行 | MEDIUM |
汚染された oembed_cache / customize_changeset 行 | CRITICAL |
改ざんされた WP オプション (upload_path、auto_prepend_file、siteurl) | CRITICAL / HIGH |
コアファイルの整合性
| チェック | 重大度 |
|---|---|
wp core verify-checksums vs. wp.org | HIGH |
クリーンなコアに対する行単位の diff -U5 | CRITICAL / HIGH / OK |
| クリーンなコアに存在しない追加ファイル | CRITICAL / HIGH |
ファイル分析
| チェック | 重大度 |
|---|---|
uploads/ 内の PHP ファイル | CRITICAL |
追加の PHP 拡張子 (.php7 .phtml .phar .php5) | HIGH |
| 既知のウェブシェルとの SHA256 一致 (WSO、FilesMan、b374k、p0wny…) | CRITICAL |
SINCE_DATE 以降に変更され、かつ疑わしいパターンを含む PHP — 一致した行を表示 | CRITICAL / HIGH |
| 疑わしいパターンを含むが最近変更されていない PHP | LOW |
SINCE_DATE 以降に変更され、難読化パターンを含む JS/HTML | MEDIUM |
| 外部 C2 / データ外部送信 URL (pastebin、ngrok、Discord webhooks、bit.ly…) | CRITICAL |
.htaccess の危険なディレクティブ | HIGH |
SINCE_DATE 以降に変更された .htaccess | MEDIUM |
| PHP ペイロードを含むポリグロット画像 | CRITICAL |
| 露出したバックアップ/設定ファイル | MEDIUM |
永続化
| チェック | 重大度 |
|---|---|
curl/wget/php/base64 を含むユーザー crontab | HIGH |
| サイトパスを参照するシステム cron ファイル | MEDIUM |
リスクスコア
各サイトには、すべての検出項目の内訳付きで 0–100 のスコアが付与されます:
+------------------------------------------+
| RISK SCORE: 96/100 COMPROMISED |
+------------------------------------------+
+40 wp2shell fingerprint account
+30 PHP file(s) inside uploads/
+20 Vulnerable WordPress version
+6 Core checksum failure
| スコア | ラベル |
|---|---|
| 0–20 | Probably Clean |
| 21–40 | Low Risk |
| 41–60 | Medium Risk |
| 61–80 | High Risk |
| 81+ | COMPROMISED |
要件
- HestiaCP を実行している Linux サーバー
- bash 4.0+
- WP-CLI が
wpとしてインストールされていること rootアクセスsendmail(メール送信用)python3(AI 評価用)curl、sha256sum、file、strings、unzip
WP-CLI のインストール (未インストールの場合)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && sudo mv wp-cli.phar /usr/local/bin/wp
ワンライナーでのインストール
高速 IoC スキャン
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-scan.sh | sudo bash
メールレポート付きフルスキャン
curl -fsSL https://raw.githubusercontent.com/BytesPulse-OE/wp2shell-Hestia-Scanner/main/wp2shell-report-per-user.sh \
-o wp2shell-report-per-user.sh && sudo bash wp2shell-report-per-user.sh
使用方法
wp2shell-scan.sh
sudo bash wp2shell-scan.sh
/home/*/web/*/public_html/ 配下のすべての WordPress インストールを自動的に検出し、すべてのチェックを実行して、色分けされた出力をターミナルに表示し、完全なレポートを /root/ に保存します。
wp2shell-report-per-user.sh
sudo bash wp2shell-report-per-user.sh
起動時に 3 つの質問が表示されます:
[AI EVALUATION] Χρήση AI αξιολόγησης για αμφίβολα αρχεία; [y/N]
[SAVE REPORT] Αποθήκευση πλήρους report σε αρχείο; [y/N]
[DATE THRESHOLD] Διαφορετική ημερομηνία; Αφήστε κενό για default [YYYY-MM-DD]:
必ず DRY_RUN=1 (デフォルト) から開始してください — メールは画面に表示されるだけで、送信されません。出力が正しいことを確認した後にのみ DRY_RUN=0 に変更してください。
設定
wp2shell-scan.sh
| 変数 | デフォルト | 説明 |
|---|---|---|
WEB_ROOT | /home | HestiaCP のルートフォルダ |
SINCE_DATE | 2026-07-15 | 「最近変更された」と判定するしきい値 |
WP | wp | WP-CLI へのパス |
wp2shell-report-per-user.sh
| 変数 | デフォルト | 説明 |
|---|---|---|
DRY_RUN | 1 | 1 = プレビューのみ、0 = メール送信 |
SEND_ONLY_IF_ISSUES | 0 | 1 = 何か見つかった場合のみメール送信 |
SINCE_DATE | 2026-07-15 | 「最近変更された」と判定するしきい値 |
MAIL_FROM | security@<hostname> | 送信者メールアドレス |
CORE_CACHE | /root/wp2shell-cores | クリーンなコアのキャッシュ |
ANTHROPIC_API_KEY | (空) | AI 評価用の Claude API キー |
AI 評価 (オプション)
パターンだけでは分類できない曖昧な差分について、スキャナーは差分を Claude API (claude-sonnet-4-6) に送信し、DANGER、SUSPICIOUS、REVIEW、または OK の判定を一文の説明付きで返します。AI はグレーゾーンの場合のみ使用されます。
export ANTHROPIC_API_KEY='sk-ant-api03-...'
sudo -E bash wp2shell-report-per-user.sh
API キー: https://console.anthropic.com — claude.ai のサブスクリプションとは別です。
API キーがない場合?ブラウザアナライザーを使用
スキャン出力を Claude.ai の wp2shell Report Analyzer アーティファクトに貼り付けてください — 同じ AI 評価をブラウザ上で直接実行できます。
注意事項
- スキャナーは何も変更しません。本番稼働中のサーバーで実行しても安全です。
- WordPress をパッチ適用済みバージョンに更新すると脆弱性は解消されますが、すでに侵害されたサイトはクリーンアップされません。インジケーターが見つかった場合は、クリーンなバックアップから復元してください。
CORE_CACHEフォルダ (/root/wp2shell-cores/) はスキャン間で再利用されます。削除すると再ダウンロードが強制されます。known_shells.sha256データベースは 24 時間に 1 回自動的に更新されます。
ライセンス
GPL-3.0 — LICENSE を参照
クレジット
wp2shell の公開 (2026年7月) を受けて BytesPulse によって開発されました。
CVE 情報: https://wp2shell.com