IPBUF安全漏洞报告
English
CVE-2025-10212 CVSS 5.3 中危

CVE-2025-10212 WordPress SiteAlert插件未授权访问漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-10212
漏洞类型
未授权访问/权限绕过
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
SiteAlert (Formerly WP Health) WordPress Plugin

相关标签

WordPressSiteAlertWP Health未授权访问权限绕过信息泄露AJAX漏洞能力检查缺失CVE-2025-10212中危漏洞

漏洞概述

CVE-2025-10212是WordPress的SiteAlert(原名WP Health)插件中存在的一个安全漏洞。该漏洞源于插件的多个AJAX函数缺少必要的能力检查(capability check),导致未经认证的攻击者可以访问敏感的站点健康信息。

该漏洞影响该插件所有1.9.8及以下版本。SiteAlert插件主要用于监控WordPress站点的健康状态,包括检查已安装插件、主题、PHP版本、数据库版本等系统信息。然而,由于其核心功能函数未实施适当的权限验证机制,任何未认证的用户都可以通过直接调用这些AJAX端点来获取这些敏感的系统信息。

泄露的信息包括已安装的插件列表及其版本信息(特别是过时的插件)、PHP版本、数据库版本等。这些信息虽然单独来看危害有限,但为攻击者提供了重要的侦察情报,可以帮助其识别目标系统中存在的潜在攻击面,例如已知存在漏洞的旧版本插件或组件。攻击者可以利用这些信息进行更有针对性的后续攻击,如利用已知漏洞的攻击载荷。

该漏洞由WordPress安全公司Wordfence的安全研究员发现并报告,CVSS 3.1评分为5.3分,属于中等严重等级。虽然该漏洞本身不直接导致系统被入侵或数据被篡改,但其信息泄露的特性使其成为攻击链中的重要侦察环节。

技术细节

该漏洞的根本原因在于SiteAlert插件的AJAX处理文件(php/ajax.php)中存在多处缺少能力检查(capability check)的函数调用。具体涉及以下代码位置:

1. ajax.php第129行
2. ajax.php第144行
3. ajax.php第159行

在WordPress中,正确实现AJAX端点需要通过current_user_can()函数或类似机制来验证当前用户是否具有执行特定操作的权限。然而,该插件的这些函数直接处理来自未认证用户的请求,没有进行任何权限验证。

利用方式:
攻击者无需任何认证即可通过向WordPress站点的admin-ajax.php端点发送特定的AJAX请求来触发这些函数。WordPress的admin-ajax.php是WordPress处理AJAX请求的标准入口点,其action参数决定了要调用的钩子函数。攻击者只需要构造正确的action参数即可调用SiteAlert插件中未受保护的功能。

成功利用后,攻击者可以获取以下敏感信息:
- 已安装的WordPress插件列表及其版本号
- 过时的插件信息
- PHP版本信息
- 数据库版本信息
- 其他站点健康状态数据

这些信息为攻击者提供了目标系统的详细配置信息,可用于后续的针对性攻击,如利用已知漏洞的插件版本进行RCE或SQL注入等更严重的攻击。

攻击链分析

STEP 1
步骤1:目标识别
攻击者使用自动化工具(如WPScan)扫描互联网上的WordPress站点,识别安装了SiteAlert(原WP Health)插件且版本低于或等于1.9.8的目标。
STEP 2
步骤2:构造恶意请求
攻击者构造针对WordPress admin-ajax.php端点的POST请求,利用插件中缺少能力检查的AJAX函数,无需任何认证凭据。
STEP 3
步骤3:发送未授权请求
攻击者向目标站点的/wp-admin/admin-ajax.php发送包含特定action参数的POST请求,触发SiteAlert插件中未受保护的函数。
STEP 4
步骤4:获取敏感信息
服务器返回站点健康信息,包括已安装插件列表、版本信息、PHP版本、数据库版本等敏感数据。
STEP 5
步骤5:信息利用与后续攻击
攻击者利用泄露的信息识别目标系统中存在已知漏洞的组件(如过时版本的插件),发起更有针对性的攻击,如远程代码执行或权限提升。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10212 PoC - SiteAlert Plugin Unauthorized Access # Exploits missing capability check in AJAX endpoints import requests # Target WordPress site URL target_url = "http://target-wordpress-site.com" # WordPress admin-ajax.php endpoint ajax_endpoint = f"{target_url}/wp-admin/admin-ajax.php" # The action parameter corresponds to the unprotected AJAX action # in the SiteAlert (WP Health) plugin payload = { "action": "site_health_check", # Generic action name, actual value depends on plugin implementation } # Send unauthenticated request response = requests.post(ajax_endpoint, data=payload) # Check response if response.status_code == 200: print("[+] Vulnerability confirmed - Unauthorized access successful") print("[+] Leaked site health information:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") # Alternative curl command: # curl -X POST "http://target-wordpress-site.com/wp-admin/admin-ajax.php" \ # -d "action=site_health_check"

影响范围

SiteAlert (WP Health) Plugin <= 1.9.8

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施: 1. 通过WordPress管理后台暂时停用SiteAlert(原WP Health)插件; 2. 使用WAF(如Wordfence、Sucuri等)配置规则,阻止对/wp-admin/admin-ajax.php中SiteAlert相关action的未授权访问请求; 3. 通过.htaccess文件限制对admin-ajax.php的访问,仅允许已认证的管理员访问; 4. 监控服务器日志,识别是否有异常的admin-ajax.php请求,特别是来自未知IP的POST请求; 5. 审查已安装的其他插件和主题,确保不存在类似的权限检查缺失问题。

参考链接

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