CVE-2025-4519IDonate是WordPress平台上一款广泛使用的血液捐赠、捐赠请求和捐赠者管理系统插件。该插件在2.1.5至2.1.9版本中存在严重的权限提升漏洞,攻击者可利用此漏洞获取管理员权限,进而实现对整个网站的完全控制。漏洞的根本原因在于idonate_donor_password()函数缺少权限检查,允许任何已认证用户(包括最低权限的订阅者)调用该函数重置任意用户的密码,包括管理员账户。攻击者首先需要拥有一个有效的WordPress账户(订阅者级别即可),然后通过调用存在漏洞的函数来触发管理员密码重置流程。一旦管理员密码被重置,攻击者即可登录后台管理面板,执行任意代码、上传恶意插件或修改网站内容,最终实现对网站的完全接管。该漏洞CVSS评分高达8.8,属于高危漏洞,对使用该插件的网站构成严重威胁。建议所有使用该插件的用户立即升级到2.1.10或更高版本,以修复此安全漏洞。
漏洞存在于IDonate插件的idonate_donor_password()函数中,该函数位于src/Helpers/DonorFunctions.php文件第410行附近。函数在处理密码重置请求时,未正确验证当前用户是否具有管理其他用户密码的权限。具体来说,函数直接接受用户ID参数并执行密码重置操作,而没有调用WordPress的current_user_can()或类似函数来检查调用者是否具有管理用户的权限。这允许任何已认证用户(如订阅者角色)通过构造特定的HTTP请求,指定目标用户ID(可以是管理员的ID),来触发密码重置流程。WordPress本身在发送密码重置邮件时会生成安全令牌,但由于该插件的实现缺陷,攻击者可以在不需要访问邮箱的情况下完成整个攻击链。修复版本2.1.10在DonorFunctions.php文件中添加了适当的权限检查,确保只有具有管理用户权限的角色才能调用密码重置功能。